我們聊聊基于Spring Boot REST API設(shè)計(jì)指南
環(huán)境:Spring Boot3.2.5
1. 簡(jiǎn)介
RESTful API已成為構(gòu)建高效、可擴(kuò)展和易于維護(hù)的服務(wù)的標(biāo)準(zhǔn)。本文將深入探討如何在Spring Boot框架中使用各種HTTP方法(如GET、POST、PUT、DELETE和PATCH)來設(shè)計(jì)和實(shí)現(xiàn)高質(zhì)量的RESTful API。我們將詳細(xì)介紹每種HTTP方法的最佳實(shí)踐,包括端點(diǎn)定義、控制器方法實(shí)現(xiàn)以及響應(yīng)處理。
此外,本文還將重點(diǎn)介紹HTTP狀態(tài)碼的重要性及其在不同場(chǎng)景下的應(yīng)用。通過理解并正確使用2xx(成功)、4xx(客戶端錯(cuò)誤)和5xx(服務(wù)器錯(cuò)誤)等狀態(tài)碼,你可以提供更清晰、更具語(yǔ)義的API響應(yīng),從而提升用戶體驗(yàn)和系統(tǒng)的健壯性。
2. HTTP Method
2.1 GET請(qǐng)求
在 Spring Boot REST 中,HTTP GET 方法用于從服務(wù)器檢索資源表示。GET 請(qǐng)求具有冪等性,這意味著多個(gè)相同的請(qǐng)求與單個(gè)請(qǐng)求具有相同的效果。下面介紹如何使用 GET 方法檢索資源表示,以及設(shè)計(jì)高效、可擴(kuò)展 GET 端點(diǎn)的最佳實(shí)踐:
- 獲取資源
接口定義: 在 Spring Boot 中,你可以使用控制器方法上的 @GetMapping 注解來定義 GET 端點(diǎn)。該注解將 HTTP GET 請(qǐng)求映射到特定的 URI 路徑。
控制器方法:在控制器方法中,你要實(shí)現(xiàn)檢索資源表示的邏輯。這可能涉及查詢數(shù)據(jù)庫(kù)、調(diào)用服務(wù)方法或訪問緩存數(shù)據(jù)。
返回類型:控制器方法通常將檢索到的資源作為響應(yīng)體返回。可以直接返回資源,也可以將其封裝在一個(gè) ResponseEntity 對(duì)象中甚至自定義對(duì)象,以便對(duì) HTTP 響應(yīng)進(jìn)行額外控制。
- 設(shè)計(jì) GET 接口的最佳實(shí)踐
在 URI 路徑中使用名詞:遵循 RESTful 原則,在 URI 路徑中使用名詞來表示資源。使用具有描述性和意義的 URI,以反映所檢索資源的性質(zhì)。
保持接口簡(jiǎn)單:設(shè)計(jì)接口時(shí)應(yīng)簡(jiǎn)單明了,并專注于單一資源或資源集合。避免使用復(fù)雜的查詢參數(shù)或過長(zhǎng)的 URI 路徑,以免接口難以理解和維護(hù)。
支持分頁(yè): 如果你的應(yīng)用程序接口會(huì)返回大量資源,請(qǐng)支持分頁(yè)以提高性能和可用性。允許客戶指定頁(yè)面大小、頁(yè)碼和排序,以便瀏覽大型結(jié)果集。
過濾和排序:提供過濾和排序功能,以便用戶縮小搜索結(jié)果的范圍并按特定順序檢索數(shù)據(jù)。使用查詢參數(shù)支持按屬性過濾和按字段排序。
Cache-Controller Header:設(shè)置適當(dāng)?shù)?Cache-Control 頭,以控制緩存行為并優(yōu)化性能。使用 ETags 或 Last-Modified 時(shí)間戳等緩存機(jī)制,啟用客戶端緩存并減少服務(wù)器負(fù)載。
版本控制:對(duì) API 版本進(jìn)行規(guī)劃,以便在不破壞向后兼容性的情況下管理變更和更新。使用 URL 版本控制或基于請(qǐng)求header的版本控制,在 URI 或請(qǐng)求header中指示 API 版本。
處理錯(cuò)誤響應(yīng):設(shè)計(jì)錯(cuò)誤處理機(jī)制,針對(duì)無效請(qǐng)求或錯(cuò)誤條件返回有意義的錯(cuò)誤響應(yīng)。使用適當(dāng)?shù)?HTTP 狀態(tài)代碼和錯(cuò)誤信息向客戶端傳達(dá)錯(cuò)誤信息。
優(yōu)化性能:優(yōu)化 GET 端點(diǎn)的性能:盡量減少數(shù)據(jù)庫(kù)查詢、減小有效載荷大小并利用緩存機(jī)制。使用高效的數(shù)據(jù)檢索策略,如懶惰加載或預(yù)取,以盡量縮短響應(yīng)時(shí)間。
2.2 HEAD請(qǐng)求
在 Spring Boot REST 中,HTTP HEAD 方法用于檢索資源的元數(shù)據(jù),而不實(shí)際獲取資源本身。它與 HTTP GET 方法類似,都是檢索有關(guān)資源的信息,但與 GET 不同的是,它不會(huì)在響應(yīng)體中返回資源的實(shí)際表示形式。相反,它只返回對(duì)同一資源發(fā)出 GET 請(qǐng)求時(shí)會(huì)返回的頭信息。
以下是 HEAD 方法與 GET 的不同之處,以及在哪些情況下使用 HEAD 更有利于資源檢索:
- 獲取元數(shù)據(jù)
GET 方法:當(dāng)你發(fā)出 GET 請(qǐng)求時(shí),服務(wù)器會(huì)同時(shí)返回資源表示的headers和body。這在需要資源中包含的實(shí)際數(shù)據(jù)時(shí)非常有用。
HEAD 方法:發(fā)出 HEAD 請(qǐng)求時(shí),服務(wù)器只返回資源的headers,而不返回正文。這樣,你就可以檢索資源的元數(shù)據(jù),如內(nèi)容類型、內(nèi)容長(zhǎng)度、最后修改時(shí)間戳等,而無需下載整個(gè)資源。
- 使用 HEAD 的優(yōu)勢(shì)
減少網(wǎng)絡(luò)流量:由于 HEAD 方法只檢索headers而不是整個(gè)資源body,因此可以大大節(jié)省網(wǎng)絡(luò)帶寬,尤其是對(duì)于大型資源。在只需要有關(guān)資源的元數(shù)據(jù)而不需要實(shí)際數(shù)據(jù)的情況下,這可能會(huì)很有優(yōu)勢(shì)。
更快的響應(yīng)時(shí)間:與 GET 請(qǐng)求相比,HEAD 請(qǐng)求的響應(yīng)時(shí)間通常更快,因?yàn)樗鼈儾恍枰诰W(wǎng)絡(luò)上傳輸整個(gè)資源body。這可以提高應(yīng)用程序的性能,尤其是在高延遲或帶寬受限的環(huán)境中。
資源存在性檢查:HEAD 請(qǐng)求可用于檢查服務(wù)器上的資源是否存在,而無需實(shí)際檢索其內(nèi)容。這對(duì)于在發(fā)出后續(xù)請(qǐng)求前執(zhí)行存在性檢查或驗(yàn)證非常有用。
- 使用 HEAD 的場(chǎng)景
資源驗(yàn)證:在進(jìn)行后續(xù)請(qǐng)求之前,使用 HEAD 請(qǐng)求來驗(yàn)證資源的存在性。例如,在使用緩存資源之前,可以使用 HEAD 檢查該資源是否仍然有效。
元數(shù)據(jù)檢索:使用 HEAD 請(qǐng)求檢索資源的元數(shù)據(jù),如大小、內(nèi)容類型或最后修改時(shí)間戳。這對(duì)于生成預(yù)覽、執(zhí)行訪問控制檢查或確定緩存策略非常有用。
帶寬優(yōu)化:使用 HEAD 請(qǐng)求,只檢索必要的元數(shù)據(jù)而不是整個(gè)資源正文,從而優(yōu)化帶寬使用。這在網(wǎng)絡(luò)帶寬有限或昂貴的情況下非常有利。
2.3 DELETE請(qǐng)求
在 Spring Boot REST 中,HTTP DELETE 方法用于請(qǐng)求刪除服務(wù)器上的特定資源。DELETE 請(qǐng)求是冪等的,這意味著發(fā)出多個(gè)相同的 DELETE 請(qǐng)求與發(fā)出單個(gè)請(qǐng)求的效果相同。以下是 DELETE 方法的使用方法,以及設(shè)計(jì)安全的冪等 DELETE 操作時(shí)的注意事項(xiàng)。
- HTTP DELETE 方法的目的
資源刪除:DELETE 方法用于表示客戶端希望刪除由請(qǐng)求中提供的 URI 所標(biāo)識(shí)的特定資源。服務(wù)器負(fù)責(zé)處理 DELETE 請(qǐng)求,并從系統(tǒng)中刪除相應(yīng)的資源。
冪等性:DELETE 請(qǐng)求具有冪等性,這意味著如果客戶端發(fā)送多個(gè)相同的 DELETE 請(qǐng)求,服務(wù)器的狀態(tài)在第一次請(qǐng)求后保持不變。這就確保了重復(fù) DELETE 請(qǐng)求不會(huì)產(chǎn)生意想不到的副作用。
- 在 Spring Boot 中實(shí)現(xiàn) DELETE 操作
接口定義:在 Spring Boot 中,可以使用控制器方法上的 @DeleteMapping 注解來定義 DELETE 端點(diǎn)。該注解將 HTTP DELETE 請(qǐng)求映射到特定的 URI 路徑。
控制器方法:在控制器方法中,要實(shí)現(xiàn)刪除請(qǐng)求中提供的 URI 所標(biāo)識(shí)的資源的邏輯。這可能需要調(diào)用一個(gè)服務(wù)方法來執(zhí)行刪除操作。
響應(yīng)處理:刪除資源后,控制器方法通常會(huì)返回一個(gè)適當(dāng)?shù)?HTTP 狀態(tài)代碼(如 204 無內(nèi)容),以表示刪除成功。還可以選擇包含附加信息或成功消息的響應(yīng)正文。
- 設(shè)計(jì)安全和無效 DELETE 操作的注意事項(xiàng)
資源標(biāo)識(shí):確保 DELETE 操作是在由其唯一 URI 標(biāo)識(shí)的特定資源上執(zhí)行的。避免在集合或模糊的資源端點(diǎn)上使用 DELETE 操作,以防止意外刪除。
冪等性:將 DELETE 操作設(shè)計(jì)為等效操作,即多個(gè)相同的 DELETE 請(qǐng)求應(yīng)與單個(gè)請(qǐng)求具有相同的效果。實(shí)施適當(dāng)?shù)腻e(cuò)誤處理和響應(yīng)代碼,以確保等效行為。
安全性:確保 DELETE 操作安全,不會(huì)對(duì)服務(wù)器或其他資源產(chǎn)生有害的副作用??紤]實(shí)施身份驗(yàn)證和授權(quán)機(jī)制,限制對(duì) DELETE 端點(diǎn)的訪問,防止未經(jīng)授權(quán)的刪除。
錯(cuò)誤處理:實(shí)施錯(cuò)誤處理機(jī)制,以處理請(qǐng)求的資源無法刪除的情況,如資源不存在或客戶端缺乏足夠的權(quán)限。返回適當(dāng)?shù)腻e(cuò)誤響應(yīng),并提供信息,幫助客戶了解問題所在。
事務(wù)性:考慮 DELETE 操作的事務(wù)性,特別是在數(shù)據(jù)庫(kù)支持的應(yīng)用程序中。在刪除有關(guān)聯(lián)數(shù)據(jù)或關(guān)系的資源時(shí),使用數(shù)據(jù)庫(kù)事務(wù)確保原子性和一致性。
日志和審計(jì):實(shí)施日志記錄和審計(jì)機(jī)制,以跟蹤 DELETE 操作并監(jiān)控資源刪除情況,從而達(dá)到安全和合規(guī)的目的。記錄相關(guān)信息,如執(zhí)行刪除的用戶、時(shí)間戳和受影響的資源。
2.4 PUT請(qǐng)求
在 Spring Boot REST 中,HTTP PUT 方法通常用于更新或創(chuàng)建服務(wù)器上的資源。PUT 請(qǐng)求具有冪等性,這意味著多個(gè)相同的 PUT 請(qǐng)求與單個(gè)請(qǐng)求具有相同的效果。下面介紹如何使用 PUT 更新或創(chuàng)建資源,以及在 RESTful API 設(shè)計(jì)中處理 PUT 請(qǐng)求的最佳實(shí)踐:
- 使用 PUT 更新資源
資源標(biāo)識(shí):PUT 請(qǐng)求通常會(huì)在請(qǐng)求 URL 中指定要更新的資源的 URI。URI 可唯一標(biāo)識(shí)客戶要修改的資源。
有效載荷:PUT 請(qǐng)求包括一個(gè)有效載荷(請(qǐng)求正文),其中包含資源的更新表示。有效負(fù)載應(yīng)包含資源的完整狀態(tài),包括任何正在更新的字段。
冪等性:PUT 請(qǐng)求具有冪等性,這意味著多次發(fā)出相同的 PUT 請(qǐng)求不會(huì)導(dǎo)致不同的結(jié)果。無論重復(fù)多少次,每個(gè) PUT 請(qǐng)求都會(huì)將資源更新為相同的狀態(tài)。
- 使用 PUT 創(chuàng)建資源
創(chuàng)建資源:在某些情況下,如果客戶端在請(qǐng)求 URL 中指定了新資源的 URI,PUT 請(qǐng)求也可用于創(chuàng)建資源。不過,與使用 POST 創(chuàng)建資源相比,這種方法并不常見。
冪等性:在使用 PUT 創(chuàng)建資源時(shí),允許客戶指定新資源的 URI,以確保同態(tài)性非常重要。多個(gè)相同的 PUT 請(qǐng)求應(yīng)與單個(gè)請(qǐng)求具有相同的效果,即每次都能創(chuàng)建相同的資源。
- PUT 請(qǐng)求的最佳實(shí)踐
使用 PUT 進(jìn)行全面更新:使用 PUT 請(qǐng)求對(duì)資源進(jìn)行全面更新,客戶端在請(qǐng)求正文中提供資源的完整表示。這可確保資源更新為客戶指定的準(zhǔn)確狀態(tài)。
使用 PATCH 進(jìn)行部分更新:對(duì)于只需修改特定字段或?qū)傩缘馁Y源部分更新,可考慮使用 HTTP PATCH 方法而不是 PUT。PATCH 請(qǐng)求更適用于部分更新,因?yàn)樗试S客戶只指定要應(yīng)用到資源的更改。
驗(yàn)證輸入:驗(yàn)證 PUT 請(qǐng)求有效負(fù)載中提供的輸入,確保其符合預(yù)期格式和限制。執(zhí)行數(shù)據(jù)驗(yàn)證和清除,以防止注入攻擊并確保數(shù)據(jù)完整性。
處理并發(fā)性:實(shí)施處理資源并發(fā)更新的機(jī)制,尤其是在多用戶或分布式環(huán)境中。使用樂觀鎖定或版本控制等技術(shù)來防止沖突并確保數(shù)據(jù)一致性。
返回適當(dāng)?shù)臓顟B(tài)代碼:在響應(yīng)中返回適當(dāng)?shù)?HTTP 狀態(tài)代碼,以顯示 PUT 請(qǐng)求的結(jié)果。使用狀態(tài)代碼 200(OK)表示更新成功,201(創(chuàng)建)表示資源創(chuàng)建(如適用),404(未找到)或 409(沖突)表示錯(cuò)誤。
安全考慮因素:實(shí)施身份驗(yàn)證和授權(quán)機(jī)制,控制對(duì) PUT 端點(diǎn)的訪問,防止對(duì)資源進(jìn)行未經(jīng)授權(quán)的更新。使用 HTTPS 加密通信并保護(hù)敏感數(shù)據(jù)。
2.5 POST請(qǐng)求
在 Spring Boot REST 中,HTTP POST 方法通常用于在服務(wù)器上創(chuàng)建新資源。POST 請(qǐng)求是非冪等的,這意味著發(fā)出多個(gè)相同的 POST 請(qǐng)求可能會(huì)導(dǎo)致不同的結(jié)果,例如創(chuàng)建具有不同標(biāo)識(shí)符的多個(gè)資源。下面介紹 POST 如何用于創(chuàng)建新資源,以及在表單提交或資源創(chuàng)建等場(chǎng)景中使用時(shí)的注意事項(xiàng)。
- POST 創(chuàng)建新資源
創(chuàng)建資源:POST 請(qǐng)求用于向服務(wù)器提交數(shù)據(jù),通常是為了創(chuàng)建新資源。服務(wù)器會(huì)處理 POST 請(qǐng)求,并根據(jù)請(qǐng)求正文中提供的數(shù)據(jù)生成新資源。
不指定 URI:PUT 請(qǐng)求會(huì)在請(qǐng)求 URL 中指定要更新資源的 URI,而 POST 請(qǐng)求則不同,它不會(huì)指定新資源的 URI。相反,服務(wù)器會(huì)為新資源生成一個(gè) URI,并在響應(yīng)中返回它。
請(qǐng)求body: POST 請(qǐng)求包括一個(gè)有效載荷(請(qǐng)求正文),其中包含創(chuàng)建新資源所需的數(shù)據(jù)。有效載荷可以是各種格式,如 JSON、XML 或表單url 編碼數(shù)據(jù),具體取決于應(yīng)用程序的要求。
- POST 的注意事項(xiàng)
非冪等性:POST 請(qǐng)求具有非冪等性,這意味著發(fā)出多個(gè)相同的 POST 請(qǐng)求可能會(huì)導(dǎo)致不同的結(jié)果,例如創(chuàng)建具有不同標(biāo)識(shí)符的多個(gè)資源。在設(shè)計(jì)應(yīng)用程序接口和處理 POST 請(qǐng)求時(shí),必須考慮非冪等行為的影響。
資源創(chuàng)建與更新:使用 POST 請(qǐng)求創(chuàng)建新資源,尤其是當(dāng)客戶端沒有指定新資源的 URI 時(shí)。對(duì)于現(xiàn)有資源的更新,可考慮使用 PUT 或 PATCH 請(qǐng)求,具體取決于更新是全部更新還是部分更新。
表單提交:POST 請(qǐng)求通常用于處理網(wǎng)絡(luò)應(yīng)用程序中的表單提交。通過 POST 提交表單數(shù)據(jù)時(shí),請(qǐng)確保表單字段已正確映射到服務(wù)器端的相應(yīng)資源屬性。
驗(yàn)證和安全:驗(yàn)證 POST 請(qǐng)求中提供的輸入,確保其符合預(yù)期格式和約束條件。執(zhí)行數(shù)據(jù)驗(yàn)證和消毒,防止注入攻擊并確保數(shù)據(jù)完整性。實(shí)施身份驗(yàn)證和授權(quán)機(jī)制,控制對(duì) POST 端點(diǎn)的訪問,防止未經(jīng)授權(quán)的資源創(chuàng)建。
響應(yīng)處理:在響應(yīng)中返回適當(dāng)?shù)?HTTP 狀態(tài)代碼,以顯示 POST 請(qǐng)求的結(jié)果。使用狀態(tài)代碼 201(已創(chuàng)建)表示已成功創(chuàng)建新資源,并在 Location 標(biāo)頭中提供新創(chuàng)建資源的 URI。
錯(cuò)誤處理:錯(cuò)誤處理機(jī)制,以處理新資源創(chuàng)建失敗的情況,如驗(yàn)證錯(cuò)誤或服務(wù)器端錯(cuò)誤。返回適當(dāng)?shù)腻e(cuò)誤響應(yīng),并提供信息,幫助客戶了解問題所在。
2.6 PATCH請(qǐng)求
在 Spring Boot REST 中,HTTP PATCH 方法用于對(duì)資源進(jìn)行部分修改。PATCH 請(qǐng)求允許客戶端更新資源的特定字段或?qū)傩?,而不需要客戶端發(fā)送資源的整個(gè)表示。這樣可以實(shí)現(xiàn)更細(xì)粒度的更新,并降低覆蓋現(xiàn)有數(shù)據(jù)的風(fēng)險(xiǎn)。
下面介紹 PATCH 方法如何實(shí)現(xiàn)資源的部分更新,以及在 RESTful API 中實(shí)施 PATCH 操作的推薦實(shí)踐:
- 使用 PATCH 進(jìn)行部分更新
資源修改:PATCH 請(qǐng)求用于修改資源的特定字段或?qū)傩裕渌侄伪3植蛔?。與替換整個(gè)資源表示的 PUT 請(qǐng)求不同,PATCH 請(qǐng)求只修改指定字段。
有效荷載格式:PATCH 請(qǐng)求包括一個(gè)有效載荷(請(qǐng)求正文),其中包含要對(duì)資源進(jìn)行的修改。有效載荷通常包含資源的部分表示,只指定要更新的字段及其新值。
冪等性:PATCH 請(qǐng)求不一定具有冪等性,也就是說,如果資源狀態(tài)在請(qǐng)求之間發(fā)生變化,多次發(fā)出相同的 PATCH 請(qǐng)求可能會(huì)導(dǎo)致不同的結(jié)果。不過,客戶端可以通過在 PATCH 請(qǐng)求中包含版本或 ETag 標(biāo)頭來實(shí)現(xiàn)冪等行為。
- PATCH 操作的建議做法
使用 PATCH 進(jìn)行部分更新:當(dāng)客戶需要修改資源的特定字段或?qū)傩远挥绊懻麄€(gè)表示時(shí),可使用 PATCH 請(qǐng)求。PATCH 對(duì)于只需更新幾個(gè)字段并保留現(xiàn)有數(shù)據(jù)的情況尤其有用。
語(yǔ)義:確保 PATCH 請(qǐng)求具有明確的語(yǔ)義并遵守 RESTful 原則。使用 PATCH 請(qǐng)求對(duì)資源進(jìn)行增量更改,如更新個(gè)別字段或應(yīng)用特定轉(zhuǎn)換。
支持部分內(nèi)容:實(shí)施對(duì) If-Match 標(biāo)頭的支持,以處理基于資源版本或 ET 標(biāo)簽的有條件 PATCH 請(qǐng)求。這樣,客戶端就能確保只有當(dāng)資源狀態(tài)符合其預(yù)期時(shí),才會(huì)應(yīng)用其修改。
驗(yàn)證和錯(cuò)誤處理:驗(yàn)證 PATCH 請(qǐng)求中提供的輸入,確保其符合預(yù)期格式和限制。執(zhí)行數(shù)據(jù)驗(yàn)證和清除,防止無效修改并確保數(shù)據(jù)完整性。對(duì)無效或不成功的 PATCH 請(qǐng)求返回適當(dāng)?shù)腻e(cuò)誤響應(yīng),并提供相關(guān)信息。
3. HTTP狀態(tài)碼
在 Spring Boot REST 中,HTTP 狀態(tài)代碼用于向服務(wù)器傳達(dá)客戶端請(qǐng)求的結(jié)果。狀態(tài)代碼提供有關(guān)請(qǐng)求是否成功、遇到錯(cuò)誤或客戶端是否需要采取進(jìn)一步行動(dòng)的信息。了解并適當(dāng)使用 HTTP 狀態(tài)代碼對(duì)于構(gòu)建健壯可靠的 RESTful API 至關(guān)重要。下面概述了 HTTP 狀態(tài)代碼和一些常見的狀態(tài)代碼及其在 RESTful API 中的含義。
3.1 HTTP 狀態(tài)代碼概述
1xx(信息):這些狀態(tài)代碼表示服務(wù)器已收到請(qǐng)求并正在處理。它們主要提供信息,并不表示成功或失敗。
2xx(成功):這些狀態(tài)代碼表示客戶端請(qǐng)求成功,服務(wù)器已成功處理。最常見的成功代碼是 200(OK),表示請(qǐng)求成功,服務(wù)器返回了請(qǐng)求的資源。
3xx(重定向):這些狀態(tài)代碼表示客戶端需要采取進(jìn)一步行動(dòng)才能完成請(qǐng)求。它們通常用于重定向或表示請(qǐng)求的資源已被轉(zhuǎn)移到不同位置。
4xx(客戶端錯(cuò)誤):這些狀態(tài)代碼表示客戶端請(qǐng)求包含錯(cuò)誤或服務(wù)器無法滿足。常見的客戶端錯(cuò)誤代碼包括:400(Bad Request)表示畸形請(qǐng)求;401(Unauthorized)表示未授權(quán)訪問;404(Not Found)表示找不到資源。
5xx(服務(wù)器錯(cuò)誤):這些狀態(tài)代碼表示服務(wù)器在處理請(qǐng)求時(shí)遇到錯(cuò)誤,無法滿足請(qǐng)求。常見的服務(wù)器錯(cuò)誤代碼包括:500(內(nèi)部服務(wù)器錯(cuò)誤)表示一般服務(wù)器錯(cuò)誤,503(服務(wù)不可用)表示服務(wù)器臨時(shí)中斷或維護(hù)。
3.2 RESTful API 中的常見狀態(tài)代碼
200(OK):表示請(qǐng)求成功,服務(wù)器返回了所請(qǐng)求的資源。
201(已創(chuàng)建):表示請(qǐng)求創(chuàng)建了新資源。通常在 POST 請(qǐng)求成功后返回。
204(無內(nèi)容):表示請(qǐng)求成功,但服務(wù)器未在響應(yīng)體中返回任何內(nèi)容。通常用于成功的 DELETE 或 PUT 請(qǐng)求。
400(錯(cuò)誤請(qǐng)求):表示客戶端的請(qǐng)求格式錯(cuò)誤或包含無效數(shù)據(jù)。
401(未授權(quán)):表示客戶端需要通過身份驗(yàn)證才能訪問請(qǐng)求的資源。
403(禁止):表示客戶端已通過身份驗(yàn)證,但無權(quán)訪問請(qǐng)求的資源。
404(未找到):表示在服務(wù)器上找不到請(qǐng)求的資源。
500(服務(wù)器內(nèi)部錯(cuò)誤):表示服務(wù)器在處理請(qǐng)求時(shí)遇到意外錯(cuò)誤。
以上是關(guān)于在設(shè)計(jì)RESTful API時(shí)針對(duì)HTTP請(qǐng)求方法及狀態(tài)碼的詳細(xì)使用說明。