㈠ 怎樣理解restful格式中的uri
REST -- REpresentational State Transfer 直接翻譯:表現層狀態轉移。這個中文直譯經常出現在很多博客中。尼瑪誰聽得懂「表現層狀態轉移」?這是人話嗎?我自己也困惑了很久,查詢了很多資料,花了差不多一年有個還算清晰的理解。分享如下:
Ivony 老師的一句話概括很精闢:
URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。
--- 簡潔版 ---
0. REST不是"rest"這個單詞,而是幾個單詞縮寫。但即使那幾個單詞說出來,也無法理解在說什麼 -_-!! (不是要貶低人,是我自己也理解困難);
1. REST描述的是在網路中client和server的一種交互形式;REST本身不實用,實用的是如何設計 RESTful API(REST風格的網路介面);
2. Server提供的RESTful API中,URL中只使用名詞來指定資源,原則上不使用動詞。「資源」是REST架構或者說整個網路處理的核心。
㈡ 在restful api 設計中,如果要獲得一個資源,一定要用GET方法么
不一定,post同樣也可以,只是查詢的介面一般約定為get,修改用put,增加記錄用post,刪除用delete
㈢ restful api介面規范是什麼
REST(REpresentationStateTransfer)描述了一個架構樣式的網路系統,比如web應用程序。
一般依賴於HTTP認證,HTTP認證有幾種:basic,digest,token,這些都有標準的實現的開源包需要主要的是這個認證的帳號跟你業務的帳戶實際是不一樣的。REST屬於webService一種,安全是後台服務的安全,因此不需要實際的業務帳號,通常是系統keyStore證書庫里的賬戶。
RESTFUL特點包括:
1、每一個URI代表1種資源。
2、客戶端使用GET、POST、PUT、DELETE4個表示操作方式的動詞對服務端資源進行操作:GET用來獲取資源,POST用來新建資源(也可以用於更新資源),PUT用來更新資源,DELETE用來刪除資源。
3、通過操作資源的表現形式來操作資源。
4、資源的表現形式是XML或者HTML。
5、客戶端與服務端之間的交互在請求之間是無狀態的,從客戶端到服務端的每個請求都必須包含理解請求所必需的信息。
㈣ 如何設計好的RESTful API
規劃好你的API的外觀要先於開發它實際的功能。首先你要知道數據該如何設計和核心服務/應用程序會如何工作。如果你純粹新開發一個API,這樣會比較容易一些。但如果你是往已有的項目中增加API,你可能需要提供更多的抽象。
有時候一個集合可以表達一個資料庫表,而一個資源可以表達成裡面的一行記錄,但是這並不是常態。事實上,你的API應該盡可能通過抽象來分離數據與業務邏輯。這點非常重要,只有這樣做你才不會打擊到那些擁有復雜業務的第三方開發者,否則他們是不會使用你的API的。
當然你的服務可能很多部分是不應該通過API暴露出去的。比較常見的例子就是很多API是不允許第三方來創建用戶的。
GET (選擇):從伺服器上獲取一個具體的資源或者一個資源列表。
POST(創建):在伺服器上創建一個新的資源。
PUT(更新):以整體的方式更新伺服器上的一個資源。
PATCH(更新):只更新伺服器上一個資源的一個屬性。
DELETE(刪除):刪除伺服器上的一個資源。
還有兩個不常用的HTTP動詞:
HEAD:獲取一個資源的元數據,如數據的哈希值或最後的更新時間。
OPTIONS:獲取客戶端能對資源做什麼操作的信息。
一個好的RESTful API只允許第三方調用者使用這四個半HTTP動詞進行數據交互,並且在URL段裡面不出現任何其他的動詞。
一般來說,GET請求可以被瀏覽器緩存(通常也是這樣的)。例如,緩存請求頭用於第二次用戶的POST請求。HEAD請求是基於一個無響應體的GET請求,並且也可以被緩存的。
㈤ 什麼是REST API
REST 是REpresentational State Transfer的縮寫,字面的翻譯是表現層狀態轉移。
RESTful API就是REST風格的網路介面,REST描述的是在網路中client和server的一種交互形式;REST本身不實用,實用的是如何設計。
Server提供的RESTful API中,URL中只使用名詞來指定資源,原則上不使用動詞。「資源」是REST架構或者說整個網路處理的核心。
拓展資料:
REST指一組架構約束條件和原則,滿足約束條件和原則的應用程序設計。架構,軟體體系結構分為三部分:構建,用於描述計算機;連接器,用於描述構建的鏈接部分;配置將構建和連接器組成有機整體。
web基本技術:
URI(統一資源標示符)HTTP(超文本傳輸協議)(post、get、put、delete) Hypertext。
1、每個資源都應該有唯一的一個標識
2、使用標準的方法更改資源的狀態
3、request和response的自描述
4、資源多重表述
5、無狀態服務
用HTTP協議里的動詞來實現資源的添加,修改,刪除等操作。即通過HTTP動詞來實現資源的狀態扭轉:
GET 用來獲取資源
POST 用來新建資源(也可以用於更新資源)
PUT 用來更新資源,
DELETE 用來刪除資源。
㈥ 如何理解rest和restful,什麼是restfulAPI
簡單理解一
就是用URL定位資源,用HTTP描述操作。
簡單理解二
URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。
官方定義
一種軟體架構風格、設計風格,而不是標准,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器交互類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現緩存等機制。
以web開發舉例
在設計web介面的時候,REST主要是用於定義介面名,介面名一般是用名次寫,不用動詞,那怎麼表達「獲取」或者「刪除」或者「更新」這樣的操作呢——用請求類型來區分。
比如,我們有一個students介面,對於「學生」我們有增刪改查四種操作,怎麼定義REST介面?
增加一個學生,uri: http://testcode.com/school/students 介面類型:POST
刪除一個朋友,uri: http://testcode.com/school/students 介面類型:DELETE
修改一個朋友,uri: http://testcode.com/school/students 介面類型:PUT
查找朋友,uri: http://testcode.com/school/students 介面類型:GET
上面我們定義的四個介面就是符合REST協議的,請注意,這幾個介面都沒有動詞,只有名詞students,都是通過Http請求的介面類型來判斷是什麼業務操作。
舉個反例
uri: http://testcode.com/school/addStudents 該介面用來表示增加學生,這就是不符合REST協議的介面。
建議
用HTTP Status Code傳遞Server的狀態信息。比如最常用的 200 表示成功,500 表示Server內部錯誤,403表示Bad Request等。(反例:傳統web開發返回的狀態碼一律都是200,其實不可取。)
REST風格介面意義
前後端分離。前端拿到數據只負責展示和渲染,不對數據做任何處理。後端處理數據並以JSON格式傳輸出去,定義這樣一套統一的介面,在web,ios,android三端都可以用相同的介面,節約開發成本以及便於同一調試。
㈦ 我是一個人么,還有人覺得 RESTful 是糟糕的設計么
我主要寫後端代碼,以前寫 PHP, 現在寫 Node.js. 剛聽說 RESTful 的時候,覺得很高端大氣上檔次,很理想很美好。但在後來的實踐中發現 RESTful 很大程度上拖慢了後端的開發速度,而對前端(AngularJS)的開發速度改善也很有限。
RESTful 希望將所有請求都包裝成對資源的新增,讀取,修改,以對應不同的 HTTP 動詞,但是並非所有請求都可以歸到前面幾類,既然無法將所有請求都 RESTful 化,甚至無法將大部分的請求 RESTful 化,那麼意義就很有限了,會導致花費大量時間斟酌 API 應該如何設計。
RESTful 將一部分參數放到了 URL 里,還有一部分參數在 Header 里,從 URL 和 Header 里分離參數,雖然有庫的輔助,但是我覺得很麻煩。
RESTful 通過 Status Code 來表示結果狀態,但是通常的情況下,結果只有成功和出錯兩種情況,出錯的情況分很多種,原因都很復雜,即使有 Status Code 依然需要有一個字元串來描述錯誤詳情,所以 Status Code 在這里就顯得很多餘了。
所以我現在開始堅定地黑 RESTful, 我認為「傳統」的 API 設計才是最可行的,即:
* URL 是一個動詞,其中不包含參數。
* 沒有副作用的請求可以用 GET, 其餘必須 POST
* POST 時用正文傳遞參數,GET 時用 Query String 傳遞參數
* Status Code 為 200 或 400, 後者會返回一個字元串形式的錯誤代號。
這個?
㈧ REST 架構該怎麼生動地理解
相同問題一起答了!
我覺得問題很好,我自己去年創業的時候去學習REST和嘗試著設計RESTful API,一直覺得它的文檔晦澀難懂,國內也沒有找到太好文章。後來一年內反復琢磨了好幾遍,和FB+Square的朋友討論過好幾次,有了一個比較清晰的總結。分享如下:
@Ivony 老師的一句話概括很精闢:
URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。
--- 簡潔版 ---
0. REST不是"rest"這個單詞,而是幾個單詞縮寫。但即使那幾個單詞說出來,也無法理解在說什麼 -_-!! (不是要貶低人,是我自己也理解困難);
1. REST描述的是在網路中client和server的一種交互形式;REST本身不實用,實用的是如何設計 RESTful API(REST風格的網路介面);
2. Server提供的RESTful API中,URL中只使用名詞來指定資源,原則上不使用動詞。「資源」是REST架構或者說整個網路處理的核心。比如:
api.qc.com/v1/newsfeed: 獲取某人的新鮮;
api.qc.com/v1/friends: 獲取某人的好友列表;
api.qc.com/v1/profile: 獲取某人的詳細信息;3. 用HTTP協議里的動詞來實現資源的添加,修改,刪除等操作。即通過HTTP動詞來實現資源的狀態扭轉:
GET 用來獲取資源,
POST 用來新建資源(也可以用於更新資源),
PUT 用來更新資源,
DELETE 用來刪除資源。