欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在FastAPI中改變響應狀態(tài)碼的兩種方法

 更新時間:2025年02月26日 09:21:45   作者:夢想畫家  
FastAPI,顧名思義,是一個快速、現代、高性能的web框架,用于用Python構建后端api,響應狀態(tài)碼是一個三位數,表示請求的結果,在這篇簡明的基于示例的博文中,我將向你展示在FastAPI中更改響應狀態(tài)代碼的兩種不同方法,需要的朋友可以參考下

引言

FastAPI,顧名思義,是一個快速、現代、高性能的web框架,用于用Python構建后端api。響應狀態(tài)碼是一個三位數,表示請求的結果。例如,200表示OK, 404表示未找到,500表示服務器內部錯誤。默認情況下,FastAPI將為成功請求返回200狀態(tài)碼,為驗證錯誤返回422狀態(tài)碼。

但是,有時你可能希望更改狀態(tài)碼以指示不同的結果。例如,你可能希望為創(chuàng)建新資源的成功POST請求返回201狀態(tài)碼,或者為無法找到所請求資源的GET請求返回404狀態(tài)碼。在這篇簡明的基于示例的博文中,我將向你展示在FastAPI中更改響應狀態(tài)代碼的兩種不同方法。

使用路由裝飾器的status_code參數

要更改FastAPI中的響應狀態(tài)代碼,可以使用@app中的status_code參數。@app.get, @app.post 或其他路由裝飾器。status_code參數接受來starlette.status模塊的整數值或常量。例如,要為創(chuàng)建新用戶的POST請求返回201狀態(tài)碼,你可以如下所示:

from fastapi import FastAPI
from starlette.status import HTTP_201_CREATED

# create the FastAPI instance
app = FastAPI()

# set the status code to 201
@app.post("/users", status_code=HTTP_201_CREATED)
def create_user(name: str):
    # some logic to create a new user
    return {"name": name}

在上面的代碼片段中,我從starlette.status模塊中導入了常量HTTP_201_CREATED。starlette.status模塊是starlette框架的一部分,它是FastAPI的一個依賴。starlette.status模塊為常見的HTTP狀態(tài)碼提供常量,如HTTP_200_OK、HTTP_404_NOT_FOUND等。使用這些常量可以使代碼更具可讀性,并避免拼寫錯誤或錯誤。例如,我可以寫status_code=HTTP_201_CREATED,而不是寫status_code=201,這樣更具描述性和清晰度。

運行下面命令重啟服務:

uvicorn main:app --reload

然后去http://localhost:8000/docs, 可以看到文檔中code的值與我們配置的一致,方便用戶調試程序。

使用響應對象

在這種方法中,我們使用fastapi模塊中的Response對象在函數體中動態(tài)設置狀態(tài)碼。Response對象有status_code屬性,你可以從starlette.status模塊中分配整數值或常量狀態(tài)值。

下面的例子返回404狀態(tài)碼的GET請求,不能找到被請求的用戶:

from fastapi import FastAPI, Response
from starlette.status import HTTP_404_NOT_FOUND, HTTP_200_OK

app = FastAPI()


@app.get("/users/{user_id}")
def get_user(user_id: int, response: Response):
    # some logic to get the user by id
    user = None

    if user is None:
        # set the status code
        response.status_code = HTTP_404_NOT_FOUND
        return {"detail": "User not found"}
    else:
        # set the status code
        response.status_code = HTTP_200_OK
        return user

查看文檔,效果與上面一樣。

完整實戰(zhàn)案例

這是一個完整的代碼示例,展示了如何在不同的場景下更改FastAPI中的響應狀態(tài)代碼:

# main.py

from fastapi import FastAPI, Response
from starlette.status import HTTP_201_CREATED, HTTP_404_NOT_FOUND

app = FastAPI()

# A mock database of users
users = [
    {"id": 1, "name": "Sling Academy"},
    {"id": 2, "name": "Ranni the Witch"},
    {"id": 3, "name": "Khue"},
]


# A helper function to get a user by id
def get_user_by_id(user_id: int):
    for user in users:
        if user["id"] == user_id:
            return user
    return None


# A POST route to create a new user and return a 201 status code
@app.post("/users", status_code=HTTP_201_CREATED)
def create_user(name: str):
    # some logic to create a new user and add it to the database
    new_user = {"id": len(users) + 1, "name": name}
    users.append(new_user)
    return new_user


# A GET route to get a user by id and return either a 200 or a 404 status code
@app.get("/users/{user_id}")
def get_user(user_id: int, response: Response):
    # some logic to get the user by id from the database
    user = get_user_by_id(user_id)
    if user is None:
        response.status_code = HTTP_404_NOT_FOUND
        return {"detail": "User not found"}
    else:
        return user

最后總結

在本文中,我解釋了如何使用兩種方法在FastAPI中更改響應狀態(tài)代碼:路由裝飾器中的status_code參數和函數體中的response對象。你可以根據自己的需要和偏好使用任何一種方法。更改響應狀態(tài)碼可以幫助您更清楚地與客戶端進行通信,并遵循RESTful API設計的最佳實踐。

以上就是在FastAPI中改變響應狀態(tài)碼的兩種方法的詳細內容,更多關于FastAPI改變響應狀態(tài)碼的資料請關注腳本之家其它相關文章!

相關文章

  • Python實現識別手寫數字大綱

    Python實現識別手寫數字大綱

    這篇文章主要為大家詳細介紹了Python實現識別手寫數字的大綱,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python實現讀取文件中的特定行的方法詳解

    Python實現讀取文件中的特定行的方法詳解

    這篇文章主要為大家詳細介紹了如何在Python中實現讀取文件中的特定行,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • Python之打印日志庫(logging)

    Python之打印日志庫(logging)

    這篇文章主要介紹了Python之打印日志庫(logging),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 利用python/R語言繪制圣誕樹實例代碼

    利用python/R語言繪制圣誕樹實例代碼

    圣誕節(jié)快到了,分別用R和Python繪制了圣誕樹祝你們圣誕節(jié)快樂,所以下面這篇文章主要給大家介紹了關于如何利用python/R繪制圣誕樹的相關資料,需要的朋友可以參考下
    2021-12-12
  • Python中的魔術方法Magic?Methods使用實例全面指南

    Python中的魔術方法Magic?Methods使用實例全面指南

    在Python中,魔術方法Magic?Methods是一種特殊的方法,它們以雙下劃線開頭和結尾,如__init__、__str__等,這些方法允許定制類的行為,使得對象更具有靈活性和可定制性,本文將深入探討Python中一些常用的魔術方法,以及如何使用它們來定制類與對象
    2024-01-01
  • Python設計模式之橋接模式原理與用法實例分析

    Python設計模式之橋接模式原理與用法實例分析

    這篇文章主要介紹了Python設計模式之橋接模式原理與用法,結合具體實例形式分析了Python橋接模式的相關概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-01-01
  • Django 重寫用戶模型的實現

    Django 重寫用戶模型的實現

    這篇文章主要介紹了Django 重寫用戶模型的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Python測試開源工具splinter安裝與使用教程

    Python測試開源工具splinter安裝與使用教程

    Splinter是一個使用Python測試Web應用程序的開源工具,可以自動化瀏覽器操作,使用Splinter可以使用pyhton腳本來實現,具體安裝及操作方法跟隨小編一起看看吧
    2021-07-07
  • python爬蟲多次請求超時的幾種重試方法(6種)

    python爬蟲多次請求超時的幾種重試方法(6種)

    這篇文章主要介紹了python爬蟲多次請求超時的幾種重試方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Python實現單例模式的多種方法總結

    Python實現單例模式的多種方法總結

    單例模式是最常使用的一種設計模式,該模式的目的是確保在一個系統中,一個類只有一個實例,本文給大家介紹了Python實現單例模式的完整指南:原理、方法與最佳實踐,需要的朋友可以參考下
    2025-04-04

最新評論