Restful Web风格理解
- 后端不负责数据的渲染,只负责根据请求返回数据,有前端将数据渲染到浏览器,做到前后端分离
- REST(Representational State Transfer)表现层状态转化
- REST指的是一组架构约束条件和原则
- 为设计一个功能强、性能好、适宜通信的Web应用
- 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构
- 核心概念
- 资源(Resources)
- 互联网上的所有资源(文件、图片、服务等)
- 资源标识:URI统一资源标识符
- 设计原则:易读、层级关系、同级关系、资源的过滤
- 统一资源接口
- RESTFul架构应该遵循统一接口原则,统一接口包含了一组受限的预定义操作,不论什么样的资源,都是通过使用相同的接口进行资源访问。接口应该使用标准的HTTP方法如GET、PUT和POST,并遵循这些方法的语义
- 如果按照HTTP方法的语义来暴露资源,那么接口将会有安全性和幂等性
- GET和HEAD请求是安全的,无论请求多少次,都不改变服务器状态
- GET、HEAD、PUT和DELETE请求是幂等的,无论对资源操作多少次,结果总是一样的,后面的请求并不会产生比第一次更多的影响
- 请求方式
- GET:获取表示
- POST:创建资源,如果没有修改,则不更新资源
- PUT:创建资源,通过替换方式更新
- DELETE:删除资源
- 统一资源接口要求使用标准HTTP方法对资源进行操作,所以URI只应该来表示资源名称,而不包含资源操作,即不应该使用动作来描述,如:
- POST /getUser?id=1 ==> GET /User/1
- GET /newUser ==> POST /User
- GET /updateUser ==> PUT /User/1
- GET /deleteUser?id=2 ==> DELETE /User/2
- 表现层(Representation)
- 资源是一种信息实体,它可以有很多种外在表现形式。我们把资源具体呈现出来的形式,叫做它的表现层
- 文本——txt、HTML、XML、JSON
- 图片——JPG、PNG
- 资源是一种信息实体,它可以有很多种外在表现形式。我们把资源具体呈现出来的形式,叫做它的表现层
- 状态转移(State Transfer)
- 客户端应用状态在服务端提供的超媒体的指引下发生变迁。服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入
- 状态应该区分为应用状态和资源状态,客户端负责维护应用状态,服务端负责维护资源状态
- 客户端与服务端的交互必须是无状态的,并在每一次请求中包含处理该请求所需的一切信息
- 服务端不需要在请求间保留应用状态,只有在接受到实际请求的时候,服务端才会关注应用状态
- 这种无状态通信原则,使得服务端和中介能够理解独立的请求和响应。在多次请求中,同一客户端也不再需要依赖于同一服务器,方便实现高可扩展和高可用性的服务端
- 客户端应用状态在服务端提供的超媒体的指引下发生变迁。服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入
- 资源(Resources)
- REST指的是一组架构约束条件和原则