前言
要解释什么是REST,就要现了解什么是API(Application Programming Interface)
形象一点来说,比如像腾讯,阿里之类,他们会提供一个API,然后我们或者一些其他的小公司就可以编写一个软件去跟这个接口相连或交互。
举个例子,比如你用手机的其他软件分享内容到微信朋友圈或者微博,这些软件就是与微信和微博的api进行了交互。
一、什么是REST?
知道了API,那么就容易理解REST了。REST是一种架构风格。
稍微具体一下什么是REST架构风格。REST:Representation State Transfer(表述性状态传输)。但要具体到REST,我们还得提到Web,因为REST是以Web为平台的。
1.1 什么是Web?
Web是什么? 分布式信息系统为超文本文件和其他对象(资源)提供访问入口。
资源是Web架构的关键点,需要3个操作:识别(identify)、表示(represent)、交互(interact)
通过这三个操作,又引出三个概念uri(统一资源定位符,包括url和urn)识别资源;representation(例如html,xml,图片,视频等)表示资源;通过协议(包括http,ftp等)与资源进行交互。
1.2 综述
所以REST就是通过使用http协议和uri,利用client/server model对资源进行CRUD(Create/Read/Update/Delete)操作。
二、RESTful有哪些优点?
为什么要使用REST风格呢?我们来介绍一下它的优点:
- 客户端-服务器(Client-Server)客户端服务器分离
- 提高用户界面的便携性
- 通过简化服务器提高可伸缩性(高性能,低成本)
- 各组件分别优化(client、server分别进行改进和优化)
-
无状态(Stateless)
-
缓存(cache)
服务器返回信息必须被标记是否可以缓存,如果缓存,客户端可能会重用之前的信息发送请求。
- 减少交互次数
- 减少交互的时延
- 分层系统(Layered System)
系统组件不需要知道与它交流组件之外的事情。封装服务,引入中间层
- 降低了复杂性
- 提高扩展性
- 统一接口(Uniform Interface)
- 提高交互的可见性
- 单独改善组件
- 支持按需代码(Code-On-Demand)