gpt4 book ai didi

python - 覆盖 fastAPI 的 HTTPException 响应主体

转载 作者:行者123 更新时间:2023-12-05 04:53:00 25 4
gpt4 key购买 nike

我目前正在 fastAPI 中为 API 编写一些端点。我正在定义扩展 fastapi 的 HTTPException 的类。

问题是 HTTPException 返回一个响应主体,其中包含一个名为 detail 的属性,该属性将是一个字符串或一个 json 结构,具体取决于您传递给它的对象,如下所示。

{
"detail": {
"msg": "error message here"
}
}


{ "detail": "error message here" }

我想覆盖此行为并让它以我自己的结构响应。

我知道我可以使用异常处理程序装饰器安装自定义异常并让它返回一个 JSONResponse 对象,但这不是我想要的。

最佳答案

一个选项是 set the status code对应你的异常,然后返回一个自定义的响应体。

这是一个简单的玩具示例,使用这种方法来解决手头的问题:

from fastapi import FastAPI, Response, status

myapp = FastAPI()

@myapp.get("/")
async def app_func(response: Response, myparam: str):

#end point code here

valid_params = ['a', 'b', 'c']

if myparam not in valid_params:
#Customize logic, status code, and returned dict as needed

response.status_code = status.HTTP_400_BAD_REQUEST

return {'message': 'Oh no! I failed (without detail key)'}


response.status_code = status.HTTP_200_OK
return {'message': 'Yay! I succeeded!'}

可以找到可用状态代码的完整列表 here .

关于python - 覆盖 fastAPI 的 HTTPException 响应主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66273149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com