FastAPI-20:Response Status Code响应状态码


FastAPI-20:Response Status Code响应状态码

前言

和指定响应一样,可以在任何路径操作中添加参数status_code,用于声明响应的HTTP状态码。

  • @app.get()
  • @app.post()
  • @app.put()
  • @app.delete()

最简单的栗子

from fastapi import APIRouter
router = APIRouter()
@router.get("/", status_code=201)
async def cat_status_code(name: str):
    return {"name": name}

重点

  • status_code 接收一个带有 HTTP 状态代码的 number
  • status_code 也可以接收一个 IntEnum
  • 如果是 number,可以使用 from fastapi import status ,里面都是封装好的状态码变量,直接调用即可
  • 如果是 IntEnum,可以使用 from http import HTTPStatus ,是一个 int 类型的枚举类

正确传参的响应结果

status栗子

from fastapi import status
@router.get("/status/", status_code=status.HTTP_202_ACCEPTED)
async def cat_status_code2(name: str):
    return {"name": name}
  • 更推荐用这个,因为变量名会包含状态码和含义
  • fastapi.status是直接来自starlette.status,提供的东西都是一样的

fastapi.status

正确传参的响应结果

HTTPStatus栗子

from http import HTTPStatus
@router.get("/http-status/", status_code=HTTPStatus.INTERNAL_SERVER_ERROR)
async def cat_https_status(name: str):
    return {"name": name}

http.HTTPStatus

正确传参的响应结果

status_code作用

  • 在响应中返回该状态码
  • 在 OpenAPI Schema 中记录它,也会显示在 Swagger API 文档中

查看Swagger


文章作者: 刘宇亭
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 刘宇亭 !
评论
  目录