FastAPI: 请求路径参数的校验(5)

可以通过 Path 对路径参数做校验。

1
2
3
4
5
6
7
8
9
books = [{'name': 'python'}, {'name': 'fastapi'}, {'name': 'java'}, ]

@app.get('/users/{id}')
def root(id: int = Path(..., gt=12),
start: int = 0,
limit: Optional[int] = None):

if limit:
return {id: books[start : limit]}
return {id: books[start: ]}
  • gt:大于(greater than)
  • ge:大于等于(greater than or equal)
  • lt:小于(less than)
  • le:小于等于(less than or equal)
1
2
3
http://127.0.0.1:8000/users/11

{"detail":[{"loc":["path","id"],"msg":"ensure this value is greater than 12","type":"value_error.number.not_gt","ctx":{"limit_value":12}}]}

参数排序

有默认值参数和必填参数值都存在时,有默认值参数必须放到必填参数后边。

传递 * 作为函数的第一个参数。

1
2
3
4
5
6
7
@app.get('/users/{id}')
def root(*, id: int = Path(..., gt=12),
start: int = 0,
limit: Optional[int] = None):

if limit:
return {id: books[start : limit]}
return {id: books[start: ]}

Python 不会对该 * 做任何事情,它将之后的所有参数都作为关键字参数来调用。

唐胡璐 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
分享创造价值,您的支持将鼓励我继续前行!