简单了解REST风格设计
前言
API
API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。 用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
RESTful和SOAP
RESTFUL(英文:Representational State Transfer,简称REST)是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
SOAP是简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
相关名词解释
- REST:即Representational State Transfer的缩写,翻译过来为“表现层状态转化”
- 资源(Resources):所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息,也就是url中地址所指的资源
- 表现层(Representation):将资源呈现出来的形式
- 状态转化(State Transfer):如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"
六大原则
-
客户端-服务端(Client-Server): 这个更专注客户端和服务端的分离,服务端独立可更好服务于前端、安卓、IOS等客户端设备。
-
无状态(Stateless):服务端不保存客户端状态,客户端保存状态信息每次请求携带状态信息。
-
可缓存性(Cacheability) :服务端需回复是否可以缓存以让客户端甄别是否缓存提高效率。
-
统一接口(Uniform Interface):通过一定原则设计接口降低耦合,简化系统架构,这是RESTful设计的基本出发点。
-
分层系统(Layered System):客户端无法直接知道连接的到终端还是中间设备,分层允许你灵活的部署服务端项目。
-
按需代码(Code-On-Demand,可选):按需代码允许我们灵活的发送一些看似特殊的代码给客户端例如JavaScript代码。
优点
- URL具有很强可读性的,具有自描述性;
- 资源描述与视图的松耦合;
- 可提供OpenAPI,便于第三方系统集成,提高互操作性;
- 如果提供无状态的服务接口,可提高应用的水平扩展性;
示例
最后再看一下示例你就明白采用REST风格之后的优雅之处
- 传统URL请求格式
- http://.../?method=fwdFlowPage&id=1&num=10.0
- 采用RESTful风格后
- http://.../fwdFlowPage/1/10.0