Skip to main content

reyserver

reyserver is a backend asynchronous server integration API framework built on FastAPI.

It provides commonly used backend service capabilities, including authentication, database, caching, file management, short links, request forwarding, middleware, and static resources. Through a unified server object and dependency injection mechanism, it simplifies the development of backend API services.

The framework generally follows the RESTful style and is suitable for building asynchronous Web APIs and backend services.

Features

  • Asynchronous API framework based on FastAPI
  • Follows RESTful API design principles
  • Modular design with flexible feature composition
  • Provides a unified server object and startup mechanism
  • Supports RBAC-based user authentication and permission management
  • Supports HTTPBearer and OAuth2PasswordBearer
  • Provides user session state management
  • Supports databases and ORM
  • Provides Redis-based API caching
  • Provides file upload, download, and streaming download
  • Supports public, internal, and user-private file visibility
  • Provides temporary signed URLs for file downloads
  • Provides long URL to short URL conversion
  • Provides server-side request proxying and forwarding
  • Provides GZIP response compression and filtering middleware
  • Provides frontend static resources and public file serving
  • Provides server health checks and upload/download speed testing APIs
  • Provides commonly used dependency injection objects and parameter validation utilities

Installation

Requires Python 3.12 or higher.

pip install reyserver

Quick Start

The most basic way to start a server:

from reyserver import Server

server = Server(**server_args)

if __name__ == "__main__":

    server.run(**run_args)

Where:

  • Server: The top-level server object provided by reyserver
  • server_args: Server initialization parameters
  • run_args: Server startup parameters

The Server object also provides convenient methods for adding other modules. You can compose authentication, database, file, cache, and other features according to your project requirements.


Modules

reyserver is divided into multiple functional modules. Each module provides different backend service capabilities.

rserver — Server Methods

Top-level server module.

Provides the top-level server object of reyserver and serves as the primary entry point for using the framework.

Main features:

  • Create and configure the server object
  • Add APIs provided by other modules
  • Organize server functionality in a unified manner
  • Start the server

Basic usage:

from reyserver import Server

server = Server(**server_args)

if __name__ == "__main__":

    server.run(**run_args)

rall — All Import Methods

Unified export module.

Provides convenient exports for all reyserver modules, methods, and objects. It allows framework functionality to be imported from a centralized module, reducing the need to import components separately from multiple modules.


rauth — Authentication Methods

User authentication module.

Based on the RBAC (Role-Based Access Control) model, this module manages access permissions through users, roles, and permissions.

Main features:

  • Supports HTTPBearer
  • Supports OAuth2PasswordBearer
  • User session state management
  • User authentication APIs
  • Create, update, and delete user information
  • Automatically stores user information in the database
  • Email verification
  • SMS verification

rbase — Base Methods

Base utility module.

Provides common methods and shared functionality used by other modules.

Main features:

  • API exception methods

    • Specify HTTP response status codes
    • Automatically attach corresponding status code messages
  • Pagination methods

    • Provides unified pagination handling
    • Standardizes pagination data structures
  • Other common utility and dependency methods


rbind — Dependency Bind Methods

Dependency injection module.

Provides convenient imports for commonly used dependency objects in route functions.

Through predefined singleton objects, API endpoints can easily access various contexts and resources during server operation.

For example:

  • Global server object
  • Current request object
  • Database engine object
  • Current authenticated user information
  • Uploaded file data
  • Parameter validation objects

Parameter validation objects include:

  • IP address format validation
  • Time format validation
  • Other commonly used parameter validation utilities

The database engine supports ORM and provides automatic management of database session contexts.


rdb — Database Methods

Database module.

Provides convenient methods for creating database APIs.

By specifying database table names, corresponding data APIs can be created quickly, reducing the amount of repetitive database API code that needs to be written.


rcache — Cache Methods

Cache module.

Provides API caching capabilities based on Redis.

Main features:

  • Route function caching decorators
  • Cache expiration control
  • Full-response caching for individual APIs
  • Cache data separately based on API input parameters
  • Redis-based cache storage

rfile — File Methods

File service module.

Provides file upload, download, and file management APIs, including streaming downloads.

Architecture:

File data is stored on disk, while file metadata is stored in the database.

Main features:

  • File upload
  • File download
  • Streaming file download
  • File metadata management through the database
  • File visibility control
  • Temporary signed URLs for downloads

Files support different visibility levels:

Visibility Description
Public Allows direct external access
Internal Only accessible internally or in authorized scenarios
Private Only accessible by the user who owns the file

Temporary signed URLs are also provided, allowing external users to access non-public files for a limited period without directly exposing the files to public access.


rlink — Link Methods

Short link module.

Provides APIs for mapping long URLs to short URLs.

Long URL → Short URL

It can be used for short URL generation, URL mapping, and similar scenarios.


rmiddleware — Middleware Methods

Middleware module.

Provides middleware for route and response processing.

Main features:

  • Automatic GZIP response compression
  • GZIP compression path filtering
  • Other route middleware functionality

rpublic — Public Methods

Public resource module.

Provides APIs for website homepages, public files, and frontend static resources.

Main features:

  • Homepage HTML file endpoint
  • public file endpoint
  • Frontend static file endpoint
  • Frontend static route mapping

It is suitable for serving frontend build artifacts directly through the backend server.


rredirect — Redirect Methods

Request forwarding module.

Provides server-wide request proxying and forwarding functionality.

Requests received by the current server can be forwarded to another server:

Client

  │
  ▼
reyserver

  │
  ▼
Target Server

Suitable for API proxying, request forwarding, and similar scenarios.


rclient — Client Methods

Client module.

Provides convenient client methods for calling APIs provided by the server.

Primarily used to encapsulate server API calls, such as:

  • File processing APIs
  • Testing APIs
  • Other server APIs

rtest — Test Methods

Testing module.

Provides server health and network performance testing APIs.

Main features:

  • Server health checks
  • API availability testing
  • File upload speed testing
  • File download speed testing
  • Other server testing APIs

It can be used to verify server availability after deployment and measure network transmission performance.


Module Overview

Module Function
rserver Top-level server object and server startup
rall Unified exports for all methods
rauth User authentication, permissions, and session management
rbase Base methods and common utilities
rbind Route dependency injection
rdb Database APIs
rcache Redis-based API caching
rfile File upload, download, and management
rlink Long URL to short URL conversion
rmiddleware Route and response middleware
rpublic Homepage, public files, and frontend static resources
rredirect Request proxying and forwarding
rclient API client calls
rtest Server testing and upload/download speed testing

Dependencies

Main dependencies:

  • fastapi[standard]
  • fastapi-cache2[redis]
  • reyclient
  • reydb
  • reykit
  • uvicorn[standard]

Project Information

Project Information
Name reyserver
Version 1.1.288
Python >=3.12
Author Rey
Email reyxbo@163.com
Homepage reyxbo.com
Repository reyserver-py

Keywords

rey · reyxbo · server · backend · fastapi · API · async · asynchronous · cache · redis · file · link · public · redirect · RESTful

Release files for reyserver 1.1.289

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for reyserver 1.1.289
File Size Uploaded
reyserver-1.1.289.tar.gz 232.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for reyserver 1.1.289
File Interpreter ABI Platform
reyserver-1.1.289-py3-none-any.whl Python 3 none any Details

Total release size: 272.9 kB

Release files / reyserver-1.1.289.tar.gz

Download URL reyserver-1.1.289.tar.gz
Size 232.8 kB
Tags Source
SHA-256 checksum
How to use checksums
1474933183ab844079c63112fd3e4fd90d60e5d994e73f43db2b82b6bf844380
BLAKE2b-256 checksum
How to use checksums
9b12a35efda79ccb87738197147489c002607d319d9b0dfeb5b11fdc0f51bbd1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.12

Release files / reyserver-1.1.289-py3-none-any.whl

Download URL reyserver-1.1.289-py3-none-any.whl
Size 40.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5765e72d60916ca0f218d50168b75812785d8ea5d17ec4080bed222a3c09d17c
BLAKE2b-256 checksum
How to use checksums
d3a5d31319db1d63c73cc50f323743c96a9a4ceecfce6fae0c9f5ed188edc448
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.12

Release history Release notifications | RSS feed

1.1.297

1 release file

This release

1.1.289 This release

2 release files

1.1.285

1 release file

1.1.284

1 release file

1.1.283

1 release file

1.1.246

1 release file

1.1.245

1 release file

1.1.244

1 release file

1.1.243

1 release file

1.1.242

1 release file

1.1.241

1 release file

1.1.240

1 release file

1.1.239

1 release file

1.1.238

1 release file

1.1.237

1 release file

1.1.236

1 release file

1.1.235

1 release file

1.1.234

1 release file

1.1.233

1 release file

1.1.232

1 release file

1.1.231

1 release file

1.1.230

1 release file

1.1.229

1 release file

1.1.228

1 release file

1.1.216

1 release file

1.1.212

1 release file

1.1.211

1 release file

1.1.210

1 release file

1.1.209

1 release file

1.1.208

1 release file

1.1.207

1 release file

1.1.206

1 release file

1.1.205

1 release file

1.1.185

1 release file

1.1.184

1 release file

1.1.183

1 release file

1.1.182

1 release file

1.1.181

1 release file

1.1.180

1 release file

1.1.179

1 release file

1.1.178

1 release file

1.1.177

1 release file

1.1.176

1 release file

1.1.175

1 release file

1.1.174

1 release file

1.1.173

1 release file

1.1.172

1 release file

1.1.171

1 release file

1.1.170

1 release file

1.1.169

1 release file

1.1.168

1 release file

1.1.167

1 release file

1.1.166

1 release file

1.1.165

1 release file

1.1.164

1 release file

1.1.163

1 release file

1.1.162

1 release file

1.1.161

1 release file

1.1.160

1 release file

1.1.159

1 release file

1.1.158

1 release file

1.1.157

1 release file

1.1.156

1 release file

1.1.155

1 release file

1.1.154

1 release file

1.1.153

1 release file

1.1.152

1 release file

1.1.151

1 release file

1.1.150

1 release file

1.1.149

1 release file

1.1.148

1 release file

1.1.147

1 release file

1.1.146

1 release file

1.1.145

1 release file

1.1.144

1 release file

1.1.143

1 release file

1.1.142

1 release file

1.1.141

1 release file

1.1.140

1 release file

1.1.139

1 release file

1.1.138

1 release file

1.1.137

1 release file

1.1.136

1 release file

1.1.135

1 release file

1.1.134

1 release file

1.1.133

1 release file

1.1.132

1 release file

1.1.131

1 release file

1.1.130

1 release file

1.1.129

1 release file

1.1.128

1 release file

1.1.127

1 release file

1.1.126

1 release file

1.1.125

1 release file

1.1.124

1 release file

1.1.123

1 release file

1.1.122

1 release file

1.1.121

1 release file

1.1.120

1 release file

1.1.119

1 release file

1.1.118

1 release file

1.1.117

1 release file

1.1.116

1 release file

1.1.115

1 release file

1.1.114

1 release file

1.1.113

1 release file

1.1.112

1 release file

1.1.111

1 release file

1.1.110

1 release file

1.1.99

1 release file

1.1.98

1 release file

1.1.97

1 release file

1.1.96

1 release file

1.1.95

1 release file

1.1.94

1 release file

1.1.93

1 release file

1.1.92

1 release file

1.1.91

1 release file

1.1.90

1 release file

1.1.89

1 release file

1.1.88

1 release file

1.1.87

1 release file

1.1.86

1 release file

1.1.85

1 release file

1.1.84

1 release file

1.1.83

1 release file

1.1.82

1 release file

1.1.81

1 release file

1.1.80

1 release file

1.1.79

1 release file

1.1.78

1 release file

1.1.77

1 release file

1.1.76

1 release file

1.1.75

1 release file

1.1.74

1 release file

1.1.73

1 release file

1.1.72

1 release file

1.1.71

1 release file

1.1.70

1 release file

1.1.69

1 release file

1.1.68

1 release file

1.1.67

1 release file

1.1.66

1 release file

1.1.65

1 release file

1.1.64

1 release file

1.1.63

1 release file

1.1.62

1 release file

1.1.61

1 release file

1.1.60

1 release file

1.1.59

1 release file

1.1.58

1 release file

1.1.57

1 release file

1.1.56

1 release file

1.1.55

1 release file

1.1.54

1 release file

1.1.53

1 release file

1.1.52

1 release file

1.1.51

1 release file

1.1.50

1 release file

1.1.49

1 release file

1.1.48

1 release file

1.1.47

1 release file

1.1.46

1 release file

1.1.45

1 release file

1.1.44

1 release file

1.1.43

1 release file

1.1.42

1 release file

1.1.41

1 release file

1.1.40

1 release file

1.1.39

1 release file

1.1.38

1 release file

1.1.37

1 release file

1.1.36

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page