一句话: 就是用URL定位资源,用HTTP描述操作。
我在这里的答案主要解释什么是REST? 为什么要用REST?不包括具体该如何使用REST风格,你可以在网上看教程去学习相关知识。
要解释什么是REST,你应该先了解什么是API(Application Programming Interface,应用程序编程接口),形象一点说就是像一个公司比如腾讯,阿里巴巴之类,他们可以提供一个API,然后我们或者一些其他的小公司可以编一个软件去跟这个接口(API)进行相连或交互。举个例子,比如你可以用手机的其他软件分享内容到微信朋友圈或者新浪微博,这些软件就是与微信和微博的api进行了交互。
知道了API,那么就容易理解REST了。REST是什么呢? 它是一种架构风格,腾讯公司或其他公司建立API时要遵守的一种规则/风格,当然也有其他规则可以用。
现在稍微具体一下什么是REST架构风格。REST也就是Representational State Transfer(表现层状态转移)。要具体什么事REST,我们又必须提到Web(大神请忽略这里,因为我这篇是想带0基础的人入门的),因为REST是以Web为平台的。
Web是什么: 分布式信息系统为超文本文件和其他对象(资源)提供访问入口
资源是Web架构的,关键点,需要 3个操作,识别(identify) 表示(represent) 交互(interact with),通过这三个操作,又引出三个概念uri(统一资源标识符包括url和urn)识别资源;representation (例如html,xml,图片,视频等等)表示资源;通过协议(包括http,ftp等等)与资源进行交互。
所以REST就是选择通过使用http协议和uri,利用client/server model对资源进行CRUD (Create/Read/Update/Delete)增删改查操作。
那么为什么要使用REST风格呢?肯定是因为它的优点,所以才选择使用它呀。因此现在先介绍它的优点,要介绍它的优点又要提到它的六个限制,我看其他答案只提到了限制,但是没有写限制的好处,在这里我列出限制和它的好处:
1.客户-服务器(Client-Server)客户端服务器分离
优点,提高用户界面的便携性(操作简单)
通过简化服务器提高可伸缩性(高性能,低成本)
允许组件分别优化(可以让服务端和客户端分别进行改进和优化)
2.无状态(Stateless)
从客户端的每个请求要包含服务器所需要的所有信息
优点:
提高可见性(可以单独考虑每个请求)
提高了可靠性(更容易从局部故障中修复)
提高可扩展性(降低了服务器资源使用)
3.缓存(Cachable)服务器返回信息减少交互次数必须被标记是否可以缓存,如果缓存,客户端可能会重用之前的信息发送请求。
优点:
减少交互次数
减少交互的平均延迟
4.分层系统(Layered System)
系统组件不需要知道与他交流组件之外的事情。封装服务,引入中间层。
优点:
限制了系统的复杂性
提高可扩展性
5.统一接口(Uniform Interface)
优点:
提高交互的可见性
鼓励单独改善组件
6.支持按需代码(Code-On-Demand 可选)
优点:
提高可扩展性
因为其他答案已经提到了一些概念,所以我没有多写。
推荐书籍 REST in practice有中文版的,如果英语没有达到像看中文一样,我还是推荐先看中文的,效率会高一点
如果去网上搜索网页,字数不多的文章,我建议看英文版的,写的会好一点。
一些api的例子:
twitter 的api https://dev.twitter.com/rest/public
paypal 的api https://link.zhihu.com/?target=https%3A//developer.paypal.com/docs/api/