理解Restful api的意義


RESTful API 只是API的設計規范或者是一套設計理論。

 

單就URL和Method這兩個點,你可以這樣理解: URL 是用來唯一標示一個互聯網資源的,而 Method 是用來標識當前請求對該資源進行什么操作。

  你當然可以 GET http://www.xx.com/user?id=123 來刪除一個用戶,但這是不符合 RESTful API 規范的。

  符合RESTful API規范應該是 DELETE http://www.xx.com/user/123

  這里 http://www.xx.com/user/123 用來標識一個互聯網資源(某個站點的一個用戶),DELETE 用來標識我這次請求是要刪除一個用戶。

  比如我要獲取這個用戶的詳細信息,那么我的請求時:GET http://www.xx.com/user/123,這里還是相同的URL,但是我用GET方式請求,服務端就應該知道我只是要獲取資源信息,而不是刪除。

 

引自:https://segmentfault.com/q/1010000009125740   

 

RESTful API
實用的是如何正確地理解 RESTful架構和設計好RESTful API。

首先為什么要用RESTful結構呢?
大家都知道"古代"網頁是前端后端融在一起的,比如之前的PHP,JSP等。在之前的桌面時代問題不大,但是近年來移動互聯網的發展,各種類型的Client層出不窮,RESTful可以通過一套統一的接口為 Web,iOS和Android提供服務。另外對於廣大平台來說,比如Facebook platform,微博開放平台,微信公共平台等,它們不需要有顯式的前端,只需要一套提供服務的接口,於是RESTful更是它們最好的選擇。在RESTful架構下:

Server的API如何設計才滿足RESTful要求?
首先是簡潔版里面的那幾點。外加一些附帶的 best practices:
1. URL root:
*
*
2. API versioning:
可以放在URL里面,也可以用HTTP的header:
/api/v1/
3. URI使用名詞而不是動詞,且推薦用復數。
BAD
  • /getProducts
  • /listOrders
  • /retrieveClientByOrder?orderId=1
GOOD
  • GET /products : will return the list of all products
  • POST /products : will add a product to the collection
  • GET /products/4 : will retrieve product #4
  • PATCH/PUT /products/4 : will update product #4

4. 保證 HEAD 和 GET 方法是安全的,不會對資源狀態有所改變(污染)。比如嚴格杜絕如下情況:
GET /deleteProduct?id=1
5. 資源的地址推薦用嵌套結構。比如:
GET /friends/10375923/profile
UPDATE /profile/primaryAddress/city6. 警惕返回結果的大小。如果過大,及時進行分頁(pagination)或者加入限制(limit)。HTTP協議支持分頁(Pagination)操作,在Header中使用 Link 即可。
7. 使用正確的HTTP Status Code表示訪問狀態:HTTP/1.1: Status Code Definitions
8. 在返回結果用明確易懂的文本(String。注意返回的錯誤是要給人看的,避免用 1001 這種錯誤信息),而且適當地加入注釋。
9. 關於安全:自己的接口就用https,加上一個key做一次hash放在最后即可。考慮到國情,HTTPS在無線網絡里不穩定,可以使用Application Level的加密手段把整個HTTP的payload加密。有興趣的朋友可以用手機連上電腦的共享Wi-Fi,然后用Charles監聽微信的網絡請求(發照片或者刷朋友圈)。
如果是平台的API,可以用成熟但是復雜的OAuth2,新浪微博這篇:授權機制說明

鏈接:https://www.zhihu.com/question/28557115/answer/48094438


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM