REST简介
本文旨在让读者对REST有一个简明清晰的了解。
REST全称为 REpresentational State Transfer,更好理解一点是 Resource Representational State Transfer,即资源在网络中以某种表现形式进行转移。
Resource:资源,即网络中传输的数据;
Representational:表达形式,即数据传输形式,比如有JSON、XML等
State Transfer:状态转换,对数据进行操作,如增删查改等。
REST并不是一个框架,而是一种前后端交互的规范或约定,是一种软件架构风格。使用REST风格的系统称为RESTful系统, RESTful系统简化了前后端的通信,实现了前后端分离等特性。
前后端分离
在互联网页“上古”时代,前后端是融合在一起的,但随着时代发展,互联网也跳脱出了网页的束缚,实现了面向多类客户端的发展,比如说我们常用到的微信、微博等APP社区,不再需要显示的前端,只需要RESTful提供一套统一的接口,便可面向web、Android、iOS提供服务,因此REST的架构风格更容易受到现代互联网的青睐。
在RESTful系统中,通过约定RESTful API,前后端可以做到独立开发,并且可以在保证接口不变的情况下任意替换前后端 的实现语言,比如一套服务端接口可以提供给Web、小程序、Android/iOS客户端同时使用, 或者服务端实现也可以换用不同的框架甚至语言。
一般RESTful系统有静态的前端资源和服务器,部署上会单独部署前端服务(Nginx或CDN),使用反向代理将前端请求转发给后端服务, 由于无状态的特性,后端服务可以横向扩展,在流量高峰期可以通过扩容后端服务器以服务更多的请求。
前后端交互
在RESTful系统中,客户端(一般指浏览器)通过发送HTTP请求来获取或更改资源,服务端响应相关请求并返回结果数据,这便是一个完整的前后端交互过程。
一个HTTP请求包括以下几个方面:
- HTTP method,用来标识对资源(数据)的操作
- GET - 获取单个资源或一批资源
- POST - 创建新的资源
- PUT - 更新资源
- DELETE - 删除资源
- HTTP header,用来传递额外的信息,如
accept: application/json
接受的数据类型x-csrftoken
CSRF头
- Path,用来标识需要操作的资源,如
- http://example.com/customers/1234 - 表示ID为1234的用户
- http://example.com/customers/1234/orders - 表示ID为1234的用户订单
一个相应的HTTP响应包括如下几个方面:
- Content-Type: 返回的数据类型,如
application/json
- Status Code: HTTP状态码,常用的状态码如下:
- 200 - 成功
- 201 - 成功创建了新资源
- 204 - 成功,无返回体
- 400 - 客户端请求错误
- 401 - 未认证
- 403 - 未授权
- 404 - 未找到对应的资源
- 405 - 不允许的HTTP method
- 50x - 服务端错误
- Response Body:返回的数据,如JSON文本
所以,总结一下就是下面这几句话(知乎:徐磊),简明扼要!
看Url就知道要什么
看http method就知道干什么
看http status code就知道结果如何
内容引用来自:
DataWhale开源项目whale-web :datawhalechina/whale-web (github.com)
知乎覃超、知乎徐磊: 怎样用通俗的语言解释REST,以及RESTful?