破解北京pk10冠亚和值 1比0.95刷流水教程 pk10稳赚技巧方案 北京pk10怎么研究走势 北京pk赛车一天多少期 北京pk赛车历史记录 全天北京pk10赛车计划 北京pk10冠军单双技巧 北京pk两期免费计划 北京pk10冠军公式大全 pk10高手单期人工计划 北京pk10免费人工计划 pk10一天赚300好搞吗 北京pk10杀3码公式 app软件购买北京pk10 北京pk10每天开多少期 北京pk10精准一期计划 北京pk拾全天精准计划 二分pk10怎么玩 pk10怎么引诱别人玩 北京赛車pk10网站 北京pk2期计划在线网站 pk10前三跨度怎么算 赌场最怕什么样的赌法 北京pk赛车彩票官网 怎样控制自己每天赢500 北京pk10正规彩票网站 北京pk10前五1码计划 一无所有怎么白手起家 北京pk10去一尾图解

RESTful API 设计最佳实践

时间:2019-03-18   来源:尚学堂   阅读:113
  WebAPI近几年变得越来越火,而简洁的API设计在多后端系统交互应用中也变得尤为重要。通常,会使用RESTfulAPI来作为我们的WebAPI。本文介绍了几种简洁RESTfulAPI设计的最佳实践。
  使用的名词而不是动词
  使用名词来定义接口
HTTP请求方法在RESTfulWeb服务中的典型应用
  不应该使用动词:
/getAllResources
/createNewResource
/deleteAllResources
  GET方法和查询?#38382;?#19981;能改变?#35797;?#29366;态
  如果要改变?#35797;?#30340;状态,使用PUT,POST和DELETE。下面是错误的用GET方法来修改user的状态:
GET /users/711?activate 或
GET /users/711/activate
  使用名词?#35789;?/strong>
  不要混淆名词的单?#35789;?#20445;持简单,只用?#35789;?#21517;词定义所有?#35797;础?/span>
/cars 代替 /car
/users 代替 /user
/products 代替 /product
/settings 代替 /setting
  使用子?#35797;?#26469;表达?#35797;?#38388;的关系
GET /cars/711/drivers/  返回 711 号 car 的所有 driver 列表
GET /cars/711/drivers/4 返回 711 号 car 的 4 号 driver
  使用HTTP header来序列化格式
  客户端、服务端都需要知道互相之间的通讯格式。这些格式可以定义在HTTPheader里面:
  ? Content-Type:定义了请求格式
  ? Accept:定义了接收相应的格式列表
  使用HATEOAS约束
  HATEOAS(Hypermediaastheengineofapplicationstate)是REST架构风格中最复杂的约束,也是构建成熟REST服务的核心。它的重要性在于打破了客户端和服务器之间严格的契约,使得客户端可以更加智能和自适应,而REST服务本身的演化和更新也变得更?#23588;?#26131;。在介绍HATEOAS之前,先介绍一下Richardson提出的REST成熟度模型。该模型把REST服务按照成熟度划分成4个层次:
  ? 第一个层次(Level0)的Web服务只是使用HTTP作为传输方式,实际上只是远程方法调用(RPC)的一种具体?#38382;健OAP和XML-RPC都属于此类。
  ? 第二个层次(Level1)的Web服务引入了?#35797;?#30340;概念。每个?#35797;?#26377;对应的标识符和表达。
  ? 第三个层次(Level2)的Web服务使用不同的HTTP方法来进行不同的操作,并且使用HTTP状态码来表示不同的结果。如HTTPGET方法来获取?#35797;矗琀TTPDELETE方法来删除?#35797;础?/span>
  ? 第四个层次(Level3)的Web服务使用HATEOAS。在?#35797;?#30340;表达中包含了链接信息。客户端可以根据链接来发现可以执行的动作。
  从上述REST成熟度模型中可以看到,使用HATEOAS的REST服务是成熟度最高的,也是推荐的做法。对于不使用HATEOAS的REST服务,客户端和服务器的实?#31181;?#38388;是紧密耦合的。客户端需要根据服务器提供的相关文档来了解所暴露的?#35797;?#21644;对应的操作。当服务器发生了变化时,如修改了?#35797;?#30340;URI,客户端也需要进行相应的修改。而使用HATEOAS的REST服务中,客户端可以通过服务器提供的?#35797;?#30340;表达来智能地发现可以执行的操作。当服务器发生了变化时,客户端并不需要做出修改,因为?#35797;?#30340;URI和其他信息都是动态发现的。
  下面是一个HATEOAS的例子:
{
  "id": 711,
  "manufacturer": "bmw",
  "model": "X5",
  "seats": 5,
  "drivers": [
   {
    "id": "23",
    "name": "Stefan Jauker",
    "links": [
     {
     "rel": "self",
     "href": "/api/v1/drivers/23"
    }
   ]
  }
 ]
}
  提供过滤、排序、字段选择、分页
  过滤:
GET /cars?color=red 
GET /cars?seats<=2
  排序:
GET /cars?sort=-manufactorer,+model
  字段选择:
GET /cars?fields=manufacturer,model,id,color
  分页:
GET /cars?offset=10&limit=5
  API版本化
  版本号使用简单的序号,并避免点符号,如2.5?#21462;?#27491;确用法如下:
/blog/api/v1
  充分使用HTTP状态码来处理错误
  HTTP状态码(HTTPStatusCode)是用?#21592;硎就?#39029;服务器HTTP响应状态的3位数字代码。它由RFC2616规范定义的,并得到RFC2518、RFC2817、RFC2295、RFC2774、RFC4918等规范的扩展。
  在设计API处理错误时,应该充分使用HTTP状态码,而不是简单的抛出个“500–InternalServerError(内部服务器错误)”
  所有的异常都应该有个错误的payload作为?#25104;洌?#19979;面是一个例子:
{
  "errors": [
   {
    "userMessage": "Sorry, the requested resource does not exist",
    "internalMessage": "No car found in the database",
    "code": 34,
    "more info": "http://dev.mwaysolutions.com/blog/api/v1/errors/12345"
   }
  ]
}
  参?#23478;?#29992;
  《REST实战》

相关资讯

  • ?#26412;?#26657;区
  • 山西校区
  • 郑州校区
  • 武汉校区
  • 四川校区
  • 长沙校区
  • 深圳校区
  • 上海校区
  • 广州校区
  • 保定招生办

?#26412;?#28023;淀区校区(总部):?#26412;?#24066;海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
?#26412;?#20140;南校区:?#26412;?#20134;庄经济开发区科?#35789;?#22235;街6号院1号楼 赛蒂国?#20351;?#19994;园
咨询电话:400-009-1906 / 010-56233821
面授课程: JavaEE培训大数据就业班培训大数据云计算周末班培训零基础大数据连读班培训大数据云计算高手班培训人工智能周末班培训人工智能+Python全栈培训H5+PHP全栈工程师培训

山西学区地址:山西省晋中市榆次区大学城大学生活广场万科商业A1座702

郑州学区地址?#27721;幽系?#23376;商务产业园6号楼4层407
咨询电话:0371-55177956

武汉学区地址?#27721;?#21271;省武汉?#34218;?#22799;区江夏大道26号 宏信悦谷创业园4楼
咨询电话:027-87989193

四川学区地址:成都市高新区锦晖西一街99号布鲁明顿大厦2栋1003室
咨询电话:028-65176856 / 13880900114

网址:http://www.cssxt.com/
咨询电话:0731-83072091

深圳校区地址:深圳市宝安区航城街道航城大道航城创新创业园A4栋210(固戍地铁站C出口)
咨询电话:0755-23061965 / 18898413781

上海尚学堂?#23665;?#26657;区地址:上海市?#23665;?#21306;荣乐东路2369弄45号绿地伯顿大厦2层
咨询电话:021-67690939

广州校区地址:广州市天河区元岗横路31号慧通产业广场B区B1栋6楼尚学堂(地铁3号线或6号线到“天河客运站”D出口,右拐直走约800米)
咨询电话:020-2989 6995

保定招生办公室

地址?#27721;?#21271;省保定市竞秀区朝阳南大街777号鸿悦国际1101室

电话:15132423123

Copyright 2006-2019 ?#26412;?#23578;学堂科技有限公司  京ICP备13018289号-19  京公网安备11010802015183  
媒体联系:18610174079 ?#35780;?#24072;  
pk10单双最好方法