A RESTful framework for Python3.
Project description
restfx
Python3 的 RESTful 服务框架。
底层基于 werkzeug
为什么要使用此框架
开发此框架的目标是 提升开发效率。
此框架解决了以下问题:
- 没有繁锁的路由配置,免去路由注册。仅仅需要对模块根进行注册,模块下的所有路由都会自动被收集调用
- 不需要对路由 url 进行显示配置,完全自动解析
- 自动解析/校验请求参数,并填充到路由函数,省去繁锁的参数获取/类型校验。需要做的仅仅是编写一个函数,并添加函数参数的类型声明
- 提供 接口列表页面 以及接口测试支持,让接口随码更新,不用手动维护API文档。 见截图
- 提供 路由注入 支持,以通过参数方式向路由指定请求参数外的数据/函数,从而避免一些频繁的
import
和重复代码
此框架的弊端: 不支持将参数作为 url 路径的一部分
安装
pip install restfx
Since 0.7.1
安装后,可以通过 CLI 工具 restfx
命令创建基本项目结构:
restfx create projectname
使用此命令,可能需要将
restfx
安装到全局环境中。
文档
使用文档见 Gitee Wiki
创建应用
import os
import restfx
if __name__ == '__main__':
root = os.path.dirname(__file__)
app = restfx.App(root, api_prefix='any/prefix', debug=True)
app.map_routes({
'x': 'test'
})
app.map_static(static_map={})
app.startup(host='127.0.0.1', port=9127)
编写路由
test/api/demo.py
from restfx import route
from restfx.http import HttpRequest, HttpFile
@route(module='测试名称-模块', name='测试名称-GET')
def get(request, param1, param2=None, param3: int = 5):
# request 会是 HttpRequest
return {
'param1': param1,
'param2': param2,
'param3': param3,
}
@route(module='测试名称-模块', name='测试名称-POST_PARAM')
def get_param(param1, req: HttpRequest, from_=None, param3=5):
# req 会是 HttpRequest
return {
'param1': param1,
'from': from_,
'param3': param3,
}
@route(module='测试名称-模块', name='测试名称-PUT_PARAM')
def put(request: str, param1, file: HttpFile, param3=5):
# request 会是请求参数,参数列表中没有 HttpRequest
return {
'request': request,
'param1': param1,
'param3': param3,
}
@route(module='测试名称-模块', name='测试名称-DELETE_PARAM')
def delete(request, param1, from_=None, param3=5, **kwargs):
# 未在函数的参数列表中声明的请求参数,会出现在 kwargs 中
return {
'param1': param1,
'from': from_,
'param3': param3,
'variable_args': kwargs
}
截图
以下截图为接口列表,对应的路由声明源码见
以下截图仅在 Gitee仓库目录 可见
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
restfx-0.32.0.tar.gz
(97.2 kB
view details)
Built Distribution
restfx-0.32.0-py3-none-any.whl
(122.8 kB
view details)
File details
Details for the file restfx-0.32.0.tar.gz
.
File metadata
- Download URL: restfx-0.32.0.tar.gz
- Upload date:
- Size: 97.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.10.0 requests/2.27.1 setuptools/40.6.2 requests-toolbelt/1.0.0 tqdm/4.64.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52d2de73289d4f89fb29b2ba5ee295c441ab558ab729e4b0a773a8f008aedbfa |
|
MD5 | 1be602199d1508b431d1091bd0c48775 |
|
BLAKE2b-256 | 84f8b9b1f631efdbac81c321a624d33fd384d6756445083a9c23189b899d7ebd |
Provenance
File details
Details for the file restfx-0.32.0-py3-none-any.whl
.
File metadata
- Download URL: restfx-0.32.0-py3-none-any.whl
- Upload date:
- Size: 122.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.10.0 requests/2.27.1 setuptools/40.6.2 requests-toolbelt/1.0.0 tqdm/4.64.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | afeba91c9ec933691e907d12f2bb03cbdec8f48e398f1c2b149cb200bca9994f |
|
MD5 | 3935cec47640f52c940bc49a403a17a4 |
|
BLAKE2b-256 | 89800067ef4310320e14c2500a4771f674077c2cc0c662e9ea6b97785e206173 |