跳转至

基于函数视图的使用方法

sanic-dantic 提供了 parse_params 装饰器,它可以用来为函数视图添加参数检查。

from sanic import Sanic
from sanic.response import json
from sanic_dantic import parse_params, BaseModel, Field

app = Sanic(__name__)
app.config.FALLBACK_ERROR_FORMAT = "json"


class Person(BaseModel):
    name: str = Field(description="name")
    age: int = Field(description="age")


@app.route("/person")
@parse_params(query=Person)
async def person(request, params):
    return json({"ctx": request.ctx.params, "params": params})


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

参数检查的顺序

越靠前的参数检查优先级越高,如果前面的参数检查失败,后面的参数检查将不会进行。

关于检查顺序

sanic-dantic 会按照以下顺序进行参数检查:

header -> path -> query -> form -> body

当您同时提供多个参数检查时,如果其中包含有同名的参数,优先级越靠后的参数 检查将会覆盖优先级越靠前的参数。

冲突参数

form 和 body 参数检查只能有一个,如果同时提供了两个,会抛出异常。