REST与面向资源的Web开发
REST(Representational State Transfer):表述性状态转移,分布式超媒体软件的一种架构风格。源自2000年Roy Thomas Fielding的博士论文。 一套简单的设计原则、一种架构风格(或模式),不是一种具体的标准或架构。 基于使用HTTP、URI等现有的广泛流行的协议和标准,并由几个核心抽象概念支撑。 对Web的本质回归:一种真实描述Web的方式,不被特定时期的特定应用程序概念歪曲。 提供区分良好实践和糟糕实践的途径:判断特定实践是否与Web架构一致。 ### REST与面向资源的Web开发 #### REST简介 REST(Representational State Transfer)代表了一种分布式超媒体软件架构风格,最初由Roy Thomas Fielding在他的2000年博士论文中提出。REST并不是一种具体的标准或者架构,而是一套简单的设计原则和一种架构风格。它基于广泛流行的协议和标准,如HTTP和URI,并且由几个核心抽象概念所支持。 #### REST的核心理念 REST的核心理念在于回归Web的本质,即提供一种真实描述Web的方式,避免被特定时期的具体应用程序概念所歪曲。这使得REST成为了一种区分良好实践和糟糕实践的有效途径,能够帮助开发者判断特定实践是否符合Web架构的一致性。 #### REST的架构约束 REST作为一种架构风格,是由一组相互协作的架构约束来定义的。这些约束包括但不限于: - **无状态**:服务器处理请求时不应该依赖于客户端会话信息。 - **客户端-服务器**:架构中明确区分了客户端和服务器角色。 - **缓存**:允许客户端缓存响应消息。 - **统一接口**:通过标准化的交互模式简化系统架构。 - **分层系统**:允许系统组件被部署在逻辑层中。 - **按需代码**:服务器可以临时扩展客户端功能,例如通过脚本。 #### REST的五大关键词 - **资源**:REST的核心概念之一,指可以通过URI(统一资源标识符)来访问的对象或实体。 - **表示**:资源的某种表现形式,如HTML文档、XML文档或JPEG图像。 - **状态转移**:客户端通过操作资源的不同表示来改变资源的状态。 - **超媒体**:通过超链接和相关元数据提供上下文信息,指导用户如何与资源交互。 - **无状态**:服务器处理每个请求时都不依赖于之前的请求或会话信息。 #### REST与Web架构 ##### Web架构的基本要素 - **URI**:用于唯一标识资源。 - **HTTP**:作为传输协议,定义了客户端与服务器之间的通信方式。 - **Hypertext**:描述资源状态的方式,如HTML、XML、JSON等。 ##### 定义Web应用 Web应用通常指的是使用URI、HTTP和超文本技术的应用程序,运行在互联网环境中。它可以分为广义的Web应用和狭义的Web应用,后者仅指运行在浏览器中的应用程序。 #### 架构风格与REST 架构风格是一种更为抽象的概念,它定义了一组相互协作的架构约束,这些约束决定了系统的整体行为。REST作为一种架构风格,与其他分布式应用架构风格相比具有明显的特点: - **分布式对象(Distributed Objects, DO)**:如CORBA/RMI/EJB/DCOM/.NET Remoting等。 - **远程过程调用(Remote Procedure Call, RPC)**:如SOAP/XML-RPC/JSON-RPC/Flash AMF/Hessian/Burlap/DWR等。 - **表述性状态转移(Representational State Transfer, REST)**:通过使用HTTP、URI等标准来操作资源。 #### REST的特点 - **简洁**:REST利用现有的协议和标准进行构建,无需额外的框架或协议。 - **可扩展性**:REST架构允许添加新的资源类型和表示形式,从而支持应用程序的演进和发展。 - **一致性**:REST强调使用标准的HTTP方法(GET、POST、PUT、DELETE等)来操作资源,增强了系统的可预测性和一致性。 - **缓存友好**:REST允许客户端缓存响应,提高了性能和响应速度。 - **松耦合**:REST鼓励通过资源和表示进行交互,降低了系统各部分之间的耦合度。 #### 关于HTTP的一些误解 尽管HTTP通常被视为一种简单的传输协议,但它实际上包含了丰富的功能,支持细粒度的操作。例如,GET用于获取资源,POST用于创建新资源,PUT用于更新现有资源,DELETE用于删除资源。这些方法的正确使用有助于确保RESTful服务的一致性和可维护性。 #### 关于REST的一些误解 - **REST仅限于HTTP**:虽然REST通常与HTTP一起使用,但其实它的原则适用于任何类型的网络架构。 - **REST就是使用GET、POST等方法**:REST不仅仅关注HTTP方法的使用,更重要的是它的一系列架构约束。 - **REST等同于无状态**:虽然无状态是REST的一个关键特性,但这并不意味着所有RESTful服务都必须完全无状态。 REST作为一种架构风格,强调了资源的概念及其表示,并通过HTTP等协议进行交互。通过遵循REST的原则,可以构建出简洁、可扩展且易于维护的Web应用程序和服务。
- yanxia_yy2013-03-29可以用,谢谢分享
- ThinkerAng2012-11-27全是概念方面的,可以当做入门
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助