- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
10个有关RESTful API良好设计的最佳实践
Resource资源
GET读
POST创建
PUT修改
DELETE
/cars
前往 cars集合
创建新的资源
批量更新cars
删除全部cars
/cars/711
前往特定的car
该方法不允许(405)
更新一个指定的资源
擅长指定资源
不要使用:
/getAllCars/createNewCar/deleteAllRedCars
?2.Get方法和查询参数不应当涉及形态转变
使用PUT, POST?和DELETE?方法?而不是?GET?方法来转变形态,不要使用GET?进行形态转变:
GET /users/711?activate?GET /users/711/activate
3.使用复数名词
不要混淆名词单数和复数,为了保持简约,只对全部资源使用复数。
/cars 而不是 /car/users 而不是 /user/products 而不是 /product/settings 而部署 /setting
4. 使用子资源表达关系
假如一个资源与另外一个资源有关系,使用子资源:
GET /cars/711/drivers/ 前往 car 711的全部司机GET /cars/711/drivers/4 前往 car 711的4号司机
5.使用Http头声明序列化格式
在客户端和服务端,双方都要晓得通讯的格式,格式在HTTP-Header中指定
Content-Type 定义恳求格式Accept 定义系列可接受的响应格式
6.使用HATEOAS
Hypermedia?as?the?Engine?of?Application?State 超媒体作为应用形态的引擎,超文本链接可以建立更好的文本扫瞄:
{
id: 711,
manufacturer: bmw,
model: X5,
seats: 5,
drivers: [
{
id: 23,
name: Stefan Jauker,
links: [
{
rel: self,
href: /api/v1/drivers/23
}
]
}
]
}
留意href指向下一个URL
7.为集合供应过滤 排序 选择和分页等功能
Filtering过滤:
使用独一的查询参数进行过滤:
GET /cars?color=red 前往红色的carsGET /cars?seats=2 前往小于两座位的cars集合
Sorting排序:
允许针对多个字段排序
GET /cars?sort=-manufactorer,+model
这是前往依据生产者降序和模型升序陈列的car集合
Field selection
移动端能够显示其中一些字段,它们其实不需要一个资源的全部字段,给API消费者一个选择字段的力量,这会降低网络流量,提高API可用性。
GET /cars?fields=manufacturer,model,id,color
?
Paging分页
使用 limit 和offset.实现分页,缺省limit=20 和offset=0;
GET /cars?offset=10limit=5
为了将总数发给客户端,使用订制的HTTP头: X-Total-Count.
链接到下一页或上一页可以在HTTP头的link规定,遵照Link规定:
Link:
; rel=next,
; rel=last,
; rel=first,
;?rel=prev,
8.版本化你的API
使得API版本变得强制性,不要发布无版本的API,使用简约数字,避开小数点如2.5.
一般在Url后面使用?v
/blog/api/v1
9. 使用Http形态码处理错误
假如你的API没有错误处理是很难的,只是前往500和出错堆栈不肯定有用
Http形态码供应70个出错,我们只需使用10个左右:
200 – OK – 一切正常201 – OK – 新的资源已经成功创建204 – OK – 资源已经成功擅长
304 – Not Modified – 客户端使用缓存数据
400 – Bad Request – 恳求无效,需要附加细节解释如 JSON无效401 – Unauthorized – 恳求需要用户验证403 – Forbidden – 服务器已经理解了恳求,但是拒绝服务或这种恳求的访问是不允许的。404 – Not found – 没有发觉该资源422 – Unprocessable Entity – 只要服务器不能处理实体时使用,比如图像不能被格式化,或者重要字段丢失。
500 – Internal Server Error – API开发者应当避开这种错误。
使用具体的错误
文档评论(0)