我想在UUID验证失败时使用我自己的自定义response_body。如何在保持处理程序上的UUID类型的同时做到这一点?
app.get("/streams/{stream_id}")
async def get_stream(stream_id: UUID):
...
我可以用str替换UUID,然后使用UUID对象在id无效时尝试ValueError异常。但我想弄清楚是否有一个FastAPI的方法。文档只允许对路径参数进行数值验证。
我如何使用我自己的UUID参数验证响应?
不幸的是,对于内联参数作为pydantic类定义来说,重写错误消息并不直接。
但是,您可以像这样简单:
@app.get("/streams/{stream_id}")
async def get_stream(stream_id: str):
try:
stream_id_validated = UUID(stream_id)
except ValueError as e:
return JSONResponse(
status_code=400,
content={"message": f"Oops! your streem id is not a valid UUID..."},
)
return stream_id_validated