-
URL使用横杠隔开单词 /system-orders
-
参数使用小驼峰命名 /system-orders/{orderId}
-
获取集合使用复数单词 GET /users
-
URL里面不要用动词 PUT /user/{userId}
-
JSON 属性使用小驼峰命名 {
userName: "Mohammad Faisal"
userId: "1"
}
-
响应体应该包含资源数 {
users: [
...
],
total: 34
}
-
在GET操作中始终接受limit和offset参数
GET /shops?offset=5&limit=5
- 添加一个fields参数,只公开API中必需的字段
只返回商店的名称,地址和联系方式。
GET /shops?fields=id,name,address,contact
-
通过HTTP请求头携带Token Authorization: Bearer xxxxxx, Extra yyyyy
-
始终验证内容类型
```api
content-type: application/json
```
-
对CRUD函数使用HTTP方法 GET:检索资源的表示形式。
POST:创建新的资源和子资源。
PUT:更新现有资源。
PATCH:更新现有资源,它只更新提供的字段,而不更新其他字段。
DELETE:删除已存在的资源。
-
在嵌套数据的URL中使用HTTP方法 GET /shops/2/products:从shop 2获取所有产品的列表。
GET /shops/2/products/31:获取产品31的详细信息,产品31属于shop 2。
DELETE /shops/2/products/31:应该删除产品31,它属于商店2。
PUT /shops/2/products/31:应该更新产品31的信息,只在resource-URL上使用PUT,而不是集合。
POST /shops:应该创建一个新的商店,并返回创建的新商店的详细信息。在集合url上使用POST。
-
CORS跨域资源共享 一定要为所有面向公共的API支持CORS(跨源资源共享)头部。
考虑支持CORS允许的“*”来源,并通过有效的OAuth令牌强制授权。
避免将用户凭证与原始验证相结合。
-
安全 在所有端点、资源和服务上实施HTTPS(tls加密)。
强制并要求所有回调url、推送通知端点和webhooks使用HTTPS。
-
总原则 扁平比嵌套好。
简单胜于复杂。
字符串比数字好。
一致性比定制更好。
|