1. 程式人生 > 其它 >FastAPI(20)- Response Status Code 響應狀態碼

FastAPI(20)- Response Status Code 響應狀態碼

FastAPI(20)- Response Status Code 響應狀態碼

前言

和指定響應模型一樣,可以在任何路徑操作中新增引數 status_code,用於宣告響應的 HTTP 狀態碼

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

最簡單的栗子

#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
# author: 小菠蘿測試筆記
# blog:  https://www.cnblogs.com/poloyy/
# time: 2021/9/21 10:27 下午
# file: 18_status_code.py
"""
import uvicorn from fastapi import FastAPI app = FastAPI() @app.post("/items/", status_code=201) async def create_item(name: str): return {"name": name} if __name__ == "__main__": uvicorn.run(app="18_status_code:app", host="127.0.0.1", port=8080, reload=True, debug=True)

重點

  • status_code 接收一個帶有 HTTP 狀態程式碼的 number
  • status_code 也可以接收一個 IntEnum
  • 如果是 number,可以使用from fastapiimport status,裡面都是封裝好的狀態碼變數,直接呼叫即可
  • 如果是 IntEnum,可以使用from http import HTTPStatus,是一個 int 型別的列舉類

status 的栗子

from fastapi import status

app = FastAPI()

@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):
    return
{"name": name}
  • 更推薦用這個,因為變數名會包含狀態碼+含義
  • fastapi.status是直接來自starlette.status,提供的東西都是一樣的

HTTPStatus 的栗子

from http import HTTPStatus

app = FastAPI()

@app.post("/items/", status_code=HTTPStatus.CREATED)
async def create_item(name: str):
    return {"name": name}

status_code 的作用

  • 在響應中返回該狀態程式碼
  • 在 OpenAPI Schema 中記錄它,也會顯示在 Swagger API 文件中

正確傳參的請求結果

檢視 Swagger API 文件

預設的 200 變成了 201