下载资源:www.yinxiangit.com
REST,即Representational State Transfer的缩写。直接翻译的意思是”表现层状态转化”。
是一种互联网应用程序的API设计理念:
URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。
近年来移动互联网的发展,前端设备层出不穷(手机、平板、桌面电脑、其他专用设备……),因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信,于是RESTful诞生了,它可以通过一套统一的接口为 Web,iOS和Android提供服务。
URI
即统一资源标识符,服务器上每一种资源,比如文档、图像、视频片段、程序 都由一个通用资源标识符(Uniform Resource Identifier, 简称”URI”)进行定位
HTTP动词
常用的HTTP动词有下面五个
- GET(SELECT):从服务器取出资源(一项或多项)。
- POST(CREATE):在服务器新建一个资源。
- PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
- PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
- DELETE(DELETE):从服务器删除资源。
RESTful架构:
服务器上每一种资源,比如一个文件,一张图片,一部电影,都有对应的url地址,如果我们的客户端需要对服务器上的这个资源进行操作,就需要通过http协议执行相应的动作来操作它,比如进行获取,更新,删除。
REST是什么?
在2000年,HTTP规范的主要作者之一Roy T. Fielding发表了他着名的博士论文。它引入了REST的概念,并作为设计良好的Web应用程序应该是什么样子的第一个正式描述之一:
REST提供了一组体系结构约束,当作为一个整体应用时,强调组件交互的可伸缩性,接口的通用性,组件的独立部署以及中间组件,以减少交互延迟,实施安全性并封装遗留系统。
在接下来的部分中,我们将详细介绍REST API的概念和约束。
关注点分离:客户端和服务器
所有RESTful应用程序必须尊重客户端和服务器之间的关注点分离。这意味着客户端和服务器可以完全互操作。只要客户端和服务器都同意数据格式(通常是JSON)和消息传递协议(HTTP),就可以在不影响服务器操作的情况下更改客户端的代码,并且可以在不影响服务器端的代码的情况下更改代码客户端。
这种模块化使RESTful应用程序更加灵活,更易于扩展。可以采用面向组件的开发方法,只要它们访问正确的REST端点,不同的客户端和服务器就可以相互交互
RESTful应用程序的核心和灵魂是组件之间统一接口的想法。REST由四个接口约束定义:
请求中的资源标识,可以命名的任何信息都是资源,可以通过URI识别资源,这与资源类型无关。
通过表示来处理资源。这些资源的表示不是直接操纵资源,而是在整个系统中传递。HTML,XML,SVG,JSON和PNG是资源表示格式的示例。
自我描述性的信息,每个客户端请求和服务器响应都包含作用于资源所需的所有上下文。
基本上,每个响应都通过为每个响应中的允许操作提供URI来描述API的使用方式。有点争议的是,许多自称为RESTful的API都跳过了这个要求。但要真正的RESTful原始论文,HATEOAS是一个艰难的要求。
总而言之,组件之间有一个统一的接口,可以将实现与它们提供的服务分离,并鼓励独立的发展。换句话说,您实现了分布式网络中的应用程序之间的互操作性 – RESTful API。