Server的API如何設計才知足RESTful要求?

Server的API如何設計才知足RESTful要求?api


首先是簡潔版裏面的那幾點。外加一些附帶的 best practices:
1. URL root:
  https://example.org/api/v1/*
  https://api.example.com/v1/*
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/city
6. 警戒返回結果的大小。若是過大,及時進行分頁(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。安全

相關文章
相關標籤/搜索