跳转至

sanic-dantic

Build Status Downloads PyPI - Python Version PyPI PyPI - License Docs

sanic-dantic 是一个基于 sanic 框架下的请求参数检查和解析库。它基于 pydantic,可以帮助开发者快速检查和获取请求参数。

安装

可以通过 pip 来进行安装:

pip install sanic-dantic

也可以通过源码进行安装:

pip install git+https://github.com/miss85246/sanic-dantic.git

依赖

sanic-dantic 依赖于 sanic 和 pydantic, 他们的具体版本为:

sanic >= 20.3.0
pydantic >= 1.7.3

简单示例

sanic-dantic 先通过 pydantic 的方式定义参数检查模型, 然后再定义视图函数,并通过 parse_params 装饰器来进行参数检查和解析。

from sanic import Sanic
from sanic.response import json

from sanic_dantic import parse_params, BaseModel, Field


# 先通过 pydantic 的方式定义参数检查模型。
class Person(BaseModel):
    name: str = Field(description="name of person")
    age: int = Field(default=18, description="age of person")


app = Sanic("SanicDanticExample")


# 定义视图函数,并通过 `parse_params` 装饰器来进行参数检查和解析。
@app.route('/example')
@parse_params(path=Person)
async def path_param_examples(request, params):
    # request.ctx 和 params 都是解析后的参数

    print("ctx:", request.ctx.params)
    print("params:", params)
    print("name:", params.name)
    print("age:", params.age)

    return json({"ctx": request.ctx.params, "params": params})


if __name__ == "__main__":
    app.run(host="localhost", port=8000)

现在,您可以通过 curl 进行测试:

curl -X GET "http://localhost:8000/example?name=Connor&age=18"

响应结果如下:

{
  "ctx": {
    "name": "Connor",
    "age": 18
  },
  "params": {
    "name": "Connor",
    "age": 18
  }
}

控制台输出如下:

ctx: {'name': 'Connor', 'age': 18}
params: {'name': 'Connor', 'age': 18}
name: Connor
age: 18

更多 pydantic 的使用方法可以参考 pydantic 官方文档

更过 sanic-dantic 的使用方法可以参考 sanic-dantic 文档

开源协议

sanic-dantic 使用 GPL-3.0 协议开源。如果您想使用 sanic-dantic 进行二次开发,或者商业使用,请您遵守 GPL-3.0 协议。