FastAPI之響應狀態碼

使用FastAPI自定義響應狀態碼

FastAPI 是一個現代、快速的 web 框架,用于構建API服務,它允許你通過Python 3.6及以上版本進行編程。一個重要的API設計是返回合適的響應狀態碼,這可以使得客戶端理解服務端的處理結果。本教程將向你展示如何在FastAPI中使用和自定義響應狀態碼。

狀態碼概覽

HTTP狀態碼是服務器用來告知客戶端關于請求的處理情況的3位數字代碼。這些狀態碼分為五個類別:

  • 1xx (信息): 請求已被接受,繼續處理。
  • 2xx (成功): 請求已成功被服務器接收、理解、并接受。
  • 3xx (重定向): 需要后續操作才能完成這一請求。
  • 4xx (客戶端錯誤): 請求包含語法錯誤或無法被執行。
  • 5xx (服務器錯誤): 服務器在處理請求的時候發生了錯誤。

FastAPI中設置響應狀態碼

FastAPI 允許在路徑操作中設置響應狀態碼。以下是一些基本示例。

設置默認響應狀態碼

你可以為路徑操作設置默認的響應狀態碼,如下:

from fastapi import FastAPI, statusapp = FastAPI()@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):return {"name": name}

在上述示例中,當你向 /items/ 端點發送 POST 請求時,無論何時,只要沒有異常,它都會返回 201 Created 狀態碼。

使用響應參數設置狀態碼

也可以在函數內部動態設置狀態碼,通過 Response 對象的 status_code 屬性:

from fastapi import FastAPI, Response, statusapp = FastAPI()@app.post("/items/")
async def create_item(name: str, response: Response):response.status_code = status.HTTP_202_ACCEPTEDreturn {"name": name}

在這個例子中,我們將響應狀態碼設置為 202 Accepted
測試結果
在這里插入圖片描述

使用HTTPException定義錯誤狀態碼

你可能需要通知客戶端錯誤發生,比如用戶請求一個不存在的項。在FastAPI中,你可以通過拋出 HTTPException 來實現。

from fastapi import FastAPI, HTTPException, statusapp = FastAPI()fake_db = {"foo": "bar"}@app.get("/items/{item_id}")
async def read_item(item_id: str):if item_id not in fake_db:raise HTTPException(status_code=404, detail="Item not found")return {"item": fake_db[item_id]}

在這個例子中,如果請求的 item_id 不存在于數據庫中,我們拋出一個 HTTPException,狀態碼為 404 Not Found
測試結果:
在這里插入圖片描述

結論

使用合適的響應狀態碼是API設計的一個重要方面,它可以提升API的可用性并且幫助客戶端理解請求的處理情況。FastAPI提供了簡單直觀的方式來設置和自定義響應狀態碼。通過本教程的示例,你現在應該能夠在你的API中有效管理響應狀態碼了。

注意:務必記住,正確使用狀態碼可以幫助客戶端更好地處理不同情況,改善用戶體驗。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213716.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213716.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213716.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

推出 Amazon EC2 C7i 實例

亞馬遜云科技宣布全面推出由定制的第 4 代英特爾至強可擴展處理器(代號為 Sapphire Rapids)提供支持的 Amazon Elastic Compute Cloud (Amazon EC2) C7i 實例。這些定制處理器僅在亞馬遜云科技上可用,與其他云提供商使用的基于 x86 的同類英特…

Kafka事務是怎么實現的?Kafka事務消息原理詳解

目錄 一、Kafka事務性消息1.1 介紹Kafka事務性消息1.2 事務性消息的應用場景1.3 Kafka事務性消息的優勢 二、Kafka事務性消息的使用2.1 配置Kafka以支持事務性消息生產者配置消費者配置 2.2 生產者:發送事務性消息創建Kafka生產者開始事務發送消息提交或中止事務 2.…

logstash之grok插件自定義規則學習

文章目錄 1、前言2、Grok提供的常用Patterns說明及舉例2.1 常用的表達式說明 3、使用grok插件進行日志字段處理4、案例1:處理nginx的日志4.1、查看nginx日志格式4.2、對nginx的日志進行過濾處理 5、案例2:處理tomcat的日志5.1、[安裝logstash-filter-mul…

外包干了3個月,技術退步明顯.......

先說一下自己的情況,大專生,18年通過校招進入武漢某軟件公司,干了接近4年的功能測試,今年年初,感覺自己不能夠在這樣下去了,長時間呆在一個舒適的環境會讓一個人墮落! 而我已經在一個企業干了四年的功能測…

【MySQL】在 Centos7 環境下安裝 MySQL

環境搭建 一、檢查環境二、檢查系統安裝包三、安裝 mysql yum 源四、安裝 mysql 服務五、啟動服務六、登錄 mysql七、配置 my.cnf 注意,我們搭建的 mysql 環境是在 Linux 的 Centos7 環境下安裝的~ 一、檢查環境 注意,我們在安裝和卸載中,先…

pytorch 中 drop_last與 nn.Parameter

1. drop_last 在使用深度學習,pytorch 的DataLoader 中, from torch.utils.data import DataLoader# Define your dataset and other necessary configurations # Create DataLoader train_loader DataLoader(dataset, batch_sizebatch_size, drop_la…

vue項目列表跳轉詳情返回列表頁保留搜索條件

需求 列表進入詳情后,返回詳情的時候保留搜索的條件,第幾頁進入的返回還在第幾頁 1.在詳情頁設置定義一個字段 mounted() {sessionStorage.setItem("msgInfo", true);},2.在獲取列表數據的時候在mounted里面判斷定義的字段 if (sessionStor…

【EI會議征稿】第二屆純數學、應用數學與計算數學國際學術會議(PACM 2024)

第二屆純數學、應用數學與計算數學國際學術會議(PACM 2024) 2024 2nd International Cnference on Pure, Applied and Computational Mathematics (PACM 2024) 第二屆純數學、應用數學計算數學國際學術會議 (PACM2024) 將于2024年1月19-21日在中國廈門隆…

報錯:AttributeError: ‘DataFrame‘ object has no attribute ‘reshape‘

這個錯誤通常發生在你試圖在 Pandas DataFrame 上直接使用 reshape 方法時。reshape 方法通常與 NumPy 數組相關聯,而不是 Pandas DataFrame。 如果你正在使用 Pandas DataFrame 并希望重新塑造它,你應該使用 Pandas 的重塑函數,如 pivot、m…

linux常用命令大全50個Linux常用命令

Linux有許多常用的命令,這些命令可以用來管理文件、運行程序、查看系統狀態等。以下是一些常用的Linux命令: pwd:顯示當前所在的工作目錄的全路徑名稱。cd:用于更改當前工作目錄,例如,若要進入Documents目…

UE5 樹葉飄落 學習筆記

一個Plane是由兩個三角形構成的,所以World Position Offset,只會從中間這條線折疊 所有材質 這里前幾篇博客有說這種邏輯,就是做一個對稱的漸變數值 這里用粒子的A值來做樹葉折疊的程度,當然你也可以用Dynamic Param 這樣就可以讓…

Android 11.0 長按按鍵切換SIM卡默認移動數據

Android 11.0 長按按鍵切換SIM卡默認移動數據 近來收到客戶需求想要通過長按按鍵實現切換SIM卡默認移動數據的功能,該功能主要通過長按按鍵發送廣播來實現,具體修改參照如下: 首先創建廣播,具體修改參照如下: /vend…

麒麟KYLINOS上刪除多余有線連接

原文鏈接:麒麟KYLINOS上刪除多余網絡有線連接 hello,大家好啊,今天我要給大家介紹的是在麒麟KYLINOS操作系統中,如何刪除通過Parallels Desktop虛擬機安裝時產生的多余有線連接。在使用Parallels Desktop虛擬機安裝麒麟桌面操作系…

C/C++ 題目:給定字符串s1和s2,判斷s1是否是s2的子序列

判斷子序列一個字符串是否是另一個字符串的子序列 解釋:字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符,不改變剩余字符相對位置形成的新字符串。 如,"ace"是"abcde"的一個子序…

服務器數據恢復—raid5少盤狀態下新建raid5如何恢復原raid5數據?

服務器數據恢復環境: 一臺服務器上搭建了一組由5塊硬盤組建的raid5陣列,服務器上層存放單位重要數據,無備份文件。 服務器故障&分析: 服務器上raid5有一塊硬盤掉線,外聘運維人員在沒有了解服務器具體情況下&#x…

如何在linux中使用rpm管理軟件

本章主要介紹使用rpm對軟件包進行管理。 使用rpm查詢軟件的信息 使用rpm安裝及卸載軟件 使用rpm對軟件進行更新 使用rpm對軟件進行驗證 rpm 全稱是redhat package manager,后來改成rpm package manager,這是根據源 碼包編譯出來的包。先從光盤中拷貝一…

[算法每日一練]-雙指針 (保姆級教程篇 1) #A-B數對 #求和 #元音字母 #最短連續子數組 #無重復字符的最長子串 #最小子串覆蓋 #方塊桶

目錄 A-B數對 解法一:雙指針 解法二:STL二分查找 解法三:map 求和 元音字母 最短連續子數組 無重復字符的最長子串 最小子串覆蓋 方塊桶 雙指針特點:雙指針絕不回頭 A-B數對 解法一:雙指針 先把數列排列成…

《C++新經典設計模式》之第8章 外觀模式

《C新經典設計模式》之第8章 外觀模式 外觀模式.cpp 外觀模式.cpp #include <iostream> #include <memory> using namespace std;// 中間層角色&#xff0c;隔離接口&#xff0c;兩部分模塊通過中間層打交道 // 提供簡單接口&#xff0c;不與底層直接打交道 // 提…

Grounding DINO、TAG2TEXT、RAM、RAM++論文解讀

提示&#xff1a;Grounding DINO、TAG2TEXT、RAM、RAM論文解讀 文章目錄 前言一、Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection1、摘要2、背景3、部分文獻翻譯4、貢獻5、模型結構解讀a.模型整體結構b.特征增強結構c.解碼結構 6、實…

使用Sourcetrail解析C項目

閱讀源碼的工具很多&#xff0c;今天給大家推薦一款別具一格的源碼閱讀神器。 它就是 Sourcetrail&#xff0c;一個免費開源、跨平臺的可視化源碼探索項目 使用