python - fastapi 上是否有任何查询约束异常?
问题描述
我正在使用 fastapi 0.70.0 和 python 3.8.10。
我期待 Query 在查询 /items/0 时引发 RequestValidationError (或其他东西)(因为 0 不是 gte=1)
我拿了 fastapi 示例代码,添加了查询参数约束(不允许第 0 项):
from fastapi import FastAPI, HTTPException, Query
from fastapi.exceptions import RequestValidationError
from fastapi.responses import PlainTextResponse
app = FastAPI()
@app.exception_handler(RequestValidationError)
async def validation_exception_handler(request, exc):
return PlainTextResponse(str(exc), status_code=400)
@app.get("/items/{item_id}")
async def read_item(item_id: int = Query(default=1, gte=1)): # /!\ Important line.
if item_id == 3:
raise HTTPException(status_code=418, detail="Nope! I don't like 3.")
return {"item_id": item_id}
几个查询:
第 1 项:有效查询:
curl http://127.0.0.1:8000/items/1 # Return item_id as expected.
{"item_id": 1}
项目 a:例外,“a”不是整数:
curl http://127.0.0.1:8000/items/a # RequestValidationError as expected
第 0 项:未引发异常,0 不允许。
curl http://127.0.0.1:8000/items/0 # ô_O, no exception, 0 is not gte=1
{"item_id": 0}
那么,如果没有引发异常,查询约束还不可用吗?
解决方案
没有这样的键gte
。你需要使用:
gt
-大于, 或ge
-大于或等于
@app.get("/items/{item_id}")
async def read_item(item_id: int = Query(default=1, ge=1)): # /!\ Important line.
if item_id == 3:
raise HTTPException(status_code=418, detail="Nope! I don't like 3.")
return {"item_id": item_id}
推荐阅读
- python - python -m textblob.download_corpora - CERTIFICATE_VERIFY_FAILED
- jquery - 在第三页打开fancybox
- python - tf.image.resize_bilinear()-当 align_corners=False
- javascript - 在右键单击和粘贴时启用发送按钮
- xamarin - uitableviewcell 附件类型未在第一次单击中显示
- typescript - 将 JSON 转换为 TypeScript 对象的最佳方法是什么?
- tokenize - 如何分解字符串以检查其属于从字母表生成的语言?
- django-rest-framework - restframework-jwt 如何处理有效负载?
- uiimageview - 有效地将 MTKView 纹理捕获到 UIImageView
- omnet++ - omnet++:无法安装 omnetpp-5.4