理解RESTful架构

来源:互联网 发布:java程序员3年职业规划 编辑:程序博客网 时间:2024/06/03 17:56
1.面向资源是rest最明显的特征,即将服务器上所有提供的事物都抽象成资源;而且每一种资源都是有状态的。这里引出了【资源及其状态】的概念。
2.除了设计资源本身,还需设计资源之间的关联关系,并且通过超链接(在表现层时)才将资源关联起来。这里引出了【超文本驱动】
3.服务器的资源通过语义化的API及一组有限的操作向外暴露。这里引出了【统一接口】,必须要提到这些统一接口是【无状态(归属)】的。
4.服务器的资源及状态在表现层表现出来,通过操作资源的表述,来间接实现操作资源的目的。这里引出了【资源的表述】和【状态转移】


**REST架构风格最重要的架构约束有6个:**
* 客户-服务器(Client-Server)
通信只能由客户端单方面发起,表现为请求-响应的形式。
* 无状态(Stateless)
通信的会话状态(Session State)应该全部由客户端负责维护。
* 缓存(Cache)
响应内容可以在通信链的某处被缓存,以改善网络效率。
* 统一接口(Uniform Interface)
通信链的组件之间通过统一的接口相互通信,以提高交互的可见性。
* 分层系统(Layered System)
通过限制组件的行为(即,每个组件只能“看到”与其交互的紧邻层),将架构分解为若干等级的层。
* 按需代码(Code-On-Demand,可选)
支持通过下载并执行一些代码(例如Java Applet、Flash或JavaScript),对客户端的功能进行扩展。




基本点:资源及其状态、资源之间超文本驱动、统一接口、无状态、资源表述及状态转移。
REST是通过架构约束和语义网建立起来的网络软件系统,其中的 
1)URL应该关注信息本身,而不能含有技术的信息,所以URL必须具有语义性;不管URL请求的是什么,统一看成无差别的信息资源。
2)不应该过早的向客户端承诺特定的数据形式,
3)API开发是restful+json 的无状态接口开发。