Java開發RESTful(三)RESTful設計

2021-08-20 23:32:28 字數 1245 閱讀 2362

摘要,本文主要是簡單討論restful的相關設計問題,包括資源設計,動作設計和響應設計。

在本系列第一篇文章中已經通過乙個優惠券的例子給大家簡單闡述了一下資源的設計,包括二級資源的設計。下面我們來看下詳細的資源設計方案:

前面我們已經了解到,在restful架構中,每個**代表一種資源(resource),所以**中不能有動詞,只能有名詞,而且所用的名詞往往與資料庫的**名對應。一般來說,資料庫中的表都是同種記錄的」集合」(collection),所以api中的名詞也應該使用複數。

例如,針對乙個動物園應用,可能涉及到的資源就應該有:

動物園資源

動物資源

飼養員資源

注意設計的方案,最後乙個單詞都是名詞並且都是複數。對於簡單的應用來說,一般乙個資源就對應乙個表,這樣的設計已經足夠。但是更多的情況,面對複雜的應用,因為http提供的介面是有限的(http一共就提供了常用的5種請求方式,所以能表示的對乙個資源的操作是有限的)怎麼抽取出合適的資源,也是乙個相對來說比較困難的事情。這個在我們後面的實戰示例中會提到。

先來看看rest中針對http常用動作的一些固定的含義:

以上五個是最常用的請求方式;另外還有兩個:

下面列幾個簡單的動作示例,示例格式 http動作 url:說明

返回結果也是http協議中非常重要的組成部分,客戶端完全通過返回結果來斷定請求的結果,包括異常等。

即針對不同的請求方式,應該返回什麼標準的內容。但是注意,具體返回什麼樣式的內容,是通過頭資訊來規定的。下面直接使用一些案例來說明:

乙個api可以允許返回json,xml甚至html等文件格式;具體的文件格式由頭資訊規定。而頭資訊**於兩點,乙個是請求頭中的accept type,表示客戶端需要請求的表現層資料格式。乙個是響應頭中的content type,表示本次請求伺服器端返回的資料格式。

另外,完全也可以通過uri字尾來表示請求格式,比如get /animals.json用來表示請求json格式的動物列表資料,使用get /animals.xml來表示請求xml格式的動物列表資料,但是更建議使用請求頭來表示,不要把資料型別和資源混淆。

返回狀態碼在http/1.1協議中是乙個非常重要的概念。表示了本次請求的乙個最終的效果,也是客戶端判定本次請求結果的第乙個入口。返回狀態碼非常多,下面簡單列舉了常用的返回狀態碼說明(格式:狀態碼 狀態碼說明 適合的請求型別:解釋):

restful開發教程

restful架構,就是目前最流行的一種網際網路軟體架構。它結構清晰 符合標準 易於理解 擴充套件方便,所以正得到越來越多 的採用。restful 即representational state transfer的縮寫 其實是乙個開發理念,是對http的很好的詮釋。非rest的url http qu...

Restful風格開發

全稱 representational state transfer 強制翻譯 表述性狀態轉移 傳輸 1.restful 是一種風格 而非一種標準 2.根據此風格設計的軟體更簡潔且有層次 3.與rest 並列的方案 soap,rpc 4.以最適合使用者的任意形式將資源傳輸出去 1 使用者 可以是客戶...

Django開發部落格 RESTful

1.介紹 restful api是指符合rest風格的web介面 具體來說就是將所有被請求的實體當作資源,通過http自帶的方法 get,head,post,put,delete 來進行對應的增刪改查等操作。比如 獲取使用者列表 get user 獲取id為1的使用者資源 get user 1 建立...