详细解读REST风格架构图、扩展性和level分级

JAVA herman 2718浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

REST本身不是架构,只是一种架构风格,理解它的时候要参考这个架构风格出现的环境所施加的约束条件。

REST规范

  • 强调HTTP应当以资源为中心,并且规范了资源URI的风格;
  • 规范了HTTP请求动作(PUT,POST等)的使用,具有对应的语义。

REST的优点

  • 对搜索引擎更优化
  • 设计规范合理,好扩展,REST目的是“建立十年内不会过时的软件系统架构”
  • 风格统一,减少了团队沟通和学习的成本,代码一致性好
  • URL具有很强可读性的,具有自描述性
  • 资源描述与视图的松耦合
  • 可提供OpenAPI,便于第三方系统集成,提高互操作性
  • 如果提供无状态的服务接口,可提高应用的水平扩展性

 总结:REST既要保证服务端演化,又要保证客户端演化,同时还要保证应用本身的演化,这实在是一个极具抽象能力的方案。

REST的缺点

  • 针对uri的定义变得复杂了
  • 所有的操作将要被抽象为GET、POST、PUT、DELETE

REST的基本概念

资源(Resource):在REST中,资源可以简单的理解为URI,表示一个网络实体。比如,/users/1/name,对应id=1的用户的属性name。既然资源是URI,就会具有以下特征:名词,代表一个资源;它对应唯一的一个资源,是资源的地址。

表现层(Representation):资源是做一个具体的实体信息,他可以有多种的展现方式。而把实体展现出来就是表现层,例如一个txt文本信息,他可以输出成html、json、xml等格式,一个图片他可以jpg、png等方式展现,这个就是表现层的意思。
URI确定一个资源,但是如何确定它的具体表现形式呢?应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。

状态转化(State Transfer):访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,肯定涉及到数据和状态的变化。而HTTP协议是无状态的,那么这些状态肯定保存在服务器端,所以如果客户端想要通知服务器端改变数据和状态的变化,肯定要通过某种方式来通知它。
客户端能通知服务器端的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

REST CRUD的用法

POST:用来增加资源
PUT:用来修改资源。PUT是幂等方法,POST不是。所以PUT用于更新、POST用于新增比较合适。
DELETE:用来上次资源
GET:用来查询资源

REST的架构图

REST的架构图
当REST架构的约束条件作为一个整体应用时,将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统之间交互的可见性。REST简化了客户端和服务器的实现,而且对于使用REST开发的应用程序更加容易扩展。

REST的扩展性

REST的扩展性

REST的level分级

REST的level分级

注意:有些防火墙会挡住HTTP PUT和DELETE请求要绕过这个限制,客户端需要把实际的PUT和DELETE请求通过 POST 请求穿透过来。RESTful 服务则要负责在收到的 POST 请求中找到原始的 HTTP 方法并还原。

REST面试问题(难点)

对于用户登录和用户退出这两个业务需求,REST指导下的架构和设计如何满足
批量的删除、修改、新增如何满足

版权声明:本文为博主原创文章,未经博主允许不得转载。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » 详细解读REST风格架构图、扩展性和level分级