首页 快递头条 RESTful架构和RESTful API规划总结

RESTful架构和RESTful API规划总结

  1024  有特别礼包 智明书 :jianshu.com/p/955eb2faa354 上一篇:详解大型分布式电商体系架构 大家好,我是尖端架构师。 REST这个词是2000年…





 

1024 
有特别礼包


智明书

jianshu.com/p/955eb2faa354



上一篇:详解大型分布式电商体系架构





大家好,我是尖端架构师。

REST这个词是2000年Roy Fielding在他的博士论文中提出的,Fielding参加了http协议的规划,也是Apache web server项目的参加者。他的这篇博士论文能够说对互联网的软件规划产生了深远的影响。可是从字面上了解REST(Representational State Transfer, 体现层状况搬运)是十分笼统的。因而,本篇文章企图将REST进行拆解,分别从以下几个部分来进行解读:

Resource 资源

REST疏忽了主语,全称应该是资源的体现层状况搬运。所谓资源便是互联网上的各种资源,比方文本、图片、音频、视频等。在互联网上经过URI指定仅有的资源,所谓的’上网‘便是经过调用资源的URL来跟互联网上的一系列资源进行互动。

注:URI只代表资源的实体,严格地说,有些网址最终的.html后缀名是不必要的,由于这个后缀名表明格局,归于"体现层"领域,而URI应该只代表"资源"的方位。

Representational 表象

资源能够有各种详细的体现方式,比方文本能够有xml格局,html格局,json格局,乃至是二进制格局,图片能够有PNG格局,JPEG格局等。资源的一个详细体现方式,应该在HTTP恳求的头信息顶用AcceptContent-Type字段指定,这两个字段才是对"体现层"的描绘。

State Transfer 状况搬运

经过http动词来完成资源的状况搬运,用GET来恳求资源,用POST来新建资源,用PUT来更新资源,用DELETE来删去资源。

短小精悍的总结REST:

  • 用URI来定位详细的资源

  • 用HTTP恳求的Content-Type字段来描绘资源的体现方式

  • 用HTTP动词来描绘对资源的详细操作


RESTful API规划总结

跟着近年来移动互联网的开展,各种客户端出不穷:Web,IOS,Android。因而需求一种机制使得各种客户端能够和服务端进行通讯,这就使得RESTful API的架构流行起来。RESTful是REST(体现层状况转化)的形容词方式,因而RESTful API就能够了解成“契合REST风格的API”。

格局标准

依据RFC3986界说,URL是大小写灵敏的。所以为了防止歧义,尽量运用小写字母。

RESTful API 应具有杰出的可读性,当url中某一个片段(segment)由多个单词组成时,主张运用 - 来间隔单词,而不是运用 _。这首要是由于,浏览器中超链接显现的默许作用是文字并顺便下划线,假如API以_间隔单词,二者会堆叠,影响可读性。

      /api/featured-post/     # GOOD
/api/featured_post/     # WRONG

协议

供给给用户的API,总是运用HTTPs协议。运用HTTPs协议仍是HTTP协议自身和RESTful API并无联系,可是这关于进步网站的安全性很重要。别的,查找大众号“微服务架构”,获取一份惊喜礼包。

域名

API应该放在专有域名下,比方https://api.example.com/v1。也能够简略地把版别放在URL中,比方https://www.example.com/api/v1

版别

API的版别号应该放在URL中:

      https://api.example.com/v1/

名词应该运用复数

所用的名词往往和数据库的表名对应,而数据库的表是一组记载的调集,因而URL中的名词即表明一组资源的调集,故URI中的名词要运用复数

      https://api.example.com/v1/students
https://api.example.com/v1/schools
https://api.example.com/v1/employees

URL中不能运用动词

URI代表着一个资源,是一个实体,应该是名词,而不要把详细的动作放在URL中,对资源的操作应该经过HTTP的动词来完成。

不契合CRUD的状况

假如真实无法表明,也可运用动词,例如search没有对应的HTTP办法,能够在途径中运用search,愈加直观

http://api.xxx.com/apiv3/search?timestamp=123213218user_id=4192121keyword=2134789。再例如创建了博客网站,假如想要发布一个博客,能够运用POST /articles/{:id}/publish

用HTTP动词表明对资源的操作

运用HTTP协议里的动词来完成资源的获取、删去、添加等操作

  • GET:从服务器获取资源

  • POST:在服务器新建一个资源

  • PUT:在服务器更新资源(客户端供给改动后的完好资源)

  • PATCH:在服务器更新资源(客户端供给改动的特色)

  • DELETE:从服务器中删去资源

      GET     https://api.example.com/v1/schools                  # 列出一切校园
POST    https://api.example.com/v1/schools                  # 新建一个校园
GET     https://api.example.com/v1/schools/ID               # 列出指定校园的信息
DELETE  https://api.example.com/v1/schools/ID               # 删去指定校园

GET     https://api.example.com/v1/schools/ID/students      # 列出指定校园的一切学生
DELETE  https://api.example.com/v1/schools/ID/students/ID   # 删去指定校园的指定学生

HTTP状况码

  • 200 OK - [GET]:服务器成功回来用户恳求的数据

  • 201 CREATED - [POST/PUT/PATCH]:用户新建或修正数据成功

  • 204 NO CONTENT - [DELETE]:用户删去数据成功

  • 400 INVALID REQUEST - [POST/PUT/PATCH]:用户宣布的恳求有过错,服务器没有进行新建或修正数据的操作

  • 401 UNAUTHORIZED:表明用户没有权限(令牌、用户名、暗码过错)

  • 404 NOT FOUND:用户宣布的恳求针对的是不存在的记载,服务器没有进行操作

  • 500 INTERNAL SERVER ERROR:服务器产生过错,用户将无法判别宣布的恳求是否成功

其它

API的身份认证应该运用OAuth 2.0结构
服务器回来的数据格局,应该尽量运用JSON,防止运用XML。JSON有可读性强,结构紧凑,支撑的言语品种多的特色,因而JSON是RESTful API最常用的回来格局。


最终给读者整理了一份

BAT



面试题

”即可获取。










 

架构 


或许 

架构整齐 

有惊喜礼包!






 












名字+公司+职位】





版权声明:内容网络,版权归原作者一切。如有侵权烦请奉告,咱们会当即删去并表明歉意。谢谢。

猜你还想看


引荐一套开源通用后台办理体系(附源码)


看看人家那 IM 即时通讯体系,那叫一个高雅(附源码)


面试官:生成订单30分钟未付出,则主动撤销,该怎样完成?


阿里技能专家:一文教你高效画出技能架构图


16个 Redis 常见运用场景,面试有内容聊啦


面试官问:MySQL的自增 ID 用完了,怎样办?


闻名国产论坛,凉了!!!!


Spring为何需求三级缓存处理循环依靠,而不是二级缓存?


从Elasticsearch来看分布式体系架构规划


引荐一套开源通用后台办理体系


浅谈即时物流的分布式体系架构规划


十几亿用户中心体系,ES+Redis+MySQL架构就轻松搞定!


本文来自网络,不代表快递资讯网立场。转载请注明出处: http://www.llaiot.com/express-headline/2614.html
上一篇
下一篇

为您推荐

返回顶部