設計優美的Web API:
易於使用、便於更改、健壯性好、不怕公開
REST的兩層含義:
- 指符合Fielding的REST架構風格的Web服務系統
- 指使用符合RPC風格的XML或JSON + HTTP接口的系統(不使用SOAP)
端點的基本設計:
- 短小便於輸入的URI-
- 人可以讀懂的URI
- 沒有大小寫混用的URI
- 修改方便的URI
- 不暴露服務端架構的URI
- 規則統一的URI
HTTP方法和端點:
- GET獲取資源
- POST新增資源
- PUT更新已有資源
- DELETE刪除資源
- PATCH更新部分資源
查詢參數和路徑的使用區別
- 表示唯一資源時,放在路徑中
- 當參數可以忽略時,放在查詢參數中
RESTful的設計級別
- 使用HTTP
- 引入資源的概念
- 引入HTTP動詞
- 引入HATEOAS
如何指定數據格式?
- 查詢參數:url?format=xml
- 擴展名:/url.json
- Accept頭部字段
讓用戶決定響應的內容
- GraphQL
通過狀態碼錶示錯誤信息
1xx:消息
2xx:成功
3xx:重定向
4xx:客戶端原因造成的錯誤
5xx:服務端原因造成的錯誤
緩存與HTTP協議規範
RFC7234:過期模型/驗證模型
過期模型:Cache-Control/Expires
驗證模型:Last-Modified/ETag
Vary首部:指定緩存單位
Conent-Type/Accept:指定媒體類型
API版本控制
- 在URI中嵌入版本號
- 在查詢字符串中加入版本信息
- 通過媒體類型指定版本
API安全問題
- 推薦使用HTTPS
- XSS/XSRF注入漏洞
- 返回正確的數據格式
- 使用安全相關首部
- 採用KVS實現訪問限制
提供API文檔
- API Blueprint
- API Console/Apigee
- 提供SDK