FastAPI:如何为指定状态码配置默认响应无需手动返回?
FastAPI 自动返回状态码对应默认响应内容
在FastAPI中,可通过路由装饰器指定接口响应状态码,示例如下:
@router.post("/", status_code=status.HTTP_201_CREATED)
当前需求:无需在路由处理函数中手动返回JSONResponse或PlainTextResponse等响应体,而是为各状态码定义默认响应行为。例如下面的接口,希望移除手动返回的代码,让客户端自动收到对应状态码的消息(如201状态码返回"Created",而非null):
@router.post("/", status_code=status.HTTP_201_CREATED) async def create_post(req: post_schemas.Post): # 创建post记录 # 希望自动完成返回逻辑,移除以下代码 return PlainTextResponse(status_code=status.HTTP_201_CREATED, content="Created")
尝试的实现方案
responses = {200: "OK", 201: "Created"} @app.middleware("http") async def no_response_middleware(request: Request, call_next): response = await call_next(request) if ( response.status_code in responses and int(response.headers["content-length"]) == 4 ): return PlainTextResponse( status_code=response.status_code, content=responses.get(response.status_code) ) return response
内容的提问来源于stack exchange,提问作者Hossein Gholami
相关产品推荐
相关产品推荐

