What is the RESTful API ?
2017-07-28 14:25
399 查看
REST 是 RepresentationalStateTransfer 的缩写,一般中文译为 “表征状态转移”,Roy Thomas Fielding 在他2000年的PhD论文中发明了这个概念。首先需要了解的是REST并不是一种规范或者具体的框架,它描述的是一种构建网路应用的时的一些“约束”,这些约束可以帮助我们构建更好的网络应用。
这些约束包括:
Client–server 客户端和服务端分离,客户端负责状态维护/渲染后者负责业务/存储
Stateless 服务器不维护应用状态,每个请求包含足够的信息来请求数据
Cacheable 数据可以缓存,响应可以显式或隐式的指定数据能否缓存
Layered system 客户端不需要知道是否直接和服务器端通信,中间可能有比如负载均衡
Code on demand (optional) 服务器端可以临时扩展客户端的功能,比如JavaScript
Uniform interface 统一接口的约束是所有设计REST服务的基础,它还包含几个方面。
关于Uniform interface 包含下面几个方面:
Identification of resources 资源识别,资源的表述方式和资源的实际形态分离,比如用XML或者JSON来表述资源而服务器内部可能用数据库来存储资源
Manipulation of resources through these representations 资源包含足够的元数据来操作资源
Self-descriptive messages 每条消息都包含足够的元信息来表述自己如何被消费
Hypermedia as the engine of application state (HATEOAS) 这个有点复杂!!
这些约束包括:
Client–server 客户端和服务端分离,客户端负责状态维护/渲染后者负责业务/存储
Stateless 服务器不维护应用状态,每个请求包含足够的信息来请求数据
Cacheable 数据可以缓存,响应可以显式或隐式的指定数据能否缓存
Layered system 客户端不需要知道是否直接和服务器端通信,中间可能有比如负载均衡
Code on demand (optional) 服务器端可以临时扩展客户端的功能,比如JavaScript
Uniform interface 统一接口的约束是所有设计REST服务的基础,它还包含几个方面。
关于Uniform interface 包含下面几个方面:
Identification of resources 资源识别,资源的表述方式和资源的实际形态分离,比如用XML或者JSON来表述资源而服务器内部可能用数据库来存储资源
Manipulation of resources through these representations 资源包含足够的元数据来操作资源
Self-descriptive messages 每条消息都包含足够的元信息来表述自己如何被消费
Hypermedia as the engine of application state (HATEOAS) 这个有点复杂!!
相关文章推荐
- What is the difference between pages and blocks?
- What is the difference between distributed and parallel processing operating system?
- what is the hell of uv's tiling and offset
- What is the difference between GenericServlet, HttpServlet and a Servlet?
- UVA 10056 What is the Probability ?
- What is the Web Application Developer Framework
- 文科和理科的区别(What is the difference between science and engineering)?
- What is the difference between i386, i486, i586, i686, i786
- What exactly is the difference between WndProc and DefaultWndProc?
- You have tried to change the API from what has been previously approved
- What is the difference between an application server and a Web server?
- Android Studio运行问题:the SDK platform-tools version(24) is too old to check APIs cimpiled with API 25
- What is the function MultiplyUV() in shader?
- What is the single most influential book every programmer should read?
- What is the difference between the three mentioned verbs?
- What is the difference between JRE,JVM and JDK?
- What is the difference for delete/truncate/drop
- SODIMM Vs. UDIMM: What Is the Difference?
- Constraint Layout [Animations | Dynamic Constraints | UI by Java] ( What the hell is this )[Part3]
- JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI ...解决