`
bugyun
  • 浏览: 559099 次
社区版块
存档分类
最新评论

Web服务实现方案一:REST简介

 
阅读更多

 

参考:https://zh.wikipedia.org/wiki/REST

 

REST: 具象状态传输(英文:Representational State Transfer,简称REST)

 

要点及标准

  • 需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。
  • 资源是由URI来指定。
  • 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
  • 通过操作资源的表现形式来操作资源。
  • 资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。

 

REST的要求

  • 客户端和服务器结构:通信只能由客户端单方面发起,表现为请求-响应的形式。
  • 连接协议具有无状态性:通信的会话状态(Session State)应该全部由客户端负责维护。
  • 能够利用Cache机制增进性能:响应内容可以在通信链的某处被缓存,以改善网络效率。
  • 一致性的操作界面:通信链的组件之间通过统一的接口相互通信,以提高交互的可见性。
  • 层次化的系统:通过限制组件的行为(即,每个组件只能“看到”与其交互的紧邻层),将架构分解为若干等级的层。
  • 所需代码 - Javascript(可选):支持通过下载并执行一些代码(例如Java Applet、Flash或JavaScript),对客户端的功能进行扩展

 

关于状态

应该注意区别应用的状态和连接协议的状态。HTTP连接是无状态的(也就是不记录每个连接的信息),而REST传输会包含应用的所有状态信息,因此可以大幅降低对HTTP连接的重复请求资源消耗。

 

应用于Web服务

  • 符合REST设计风格的Web API称为RESTful API。它从以下三个方面资源进行定义:
  • 直观简短的资源地址:URI,比如:http://example.com/resources/。
  • 传输的资源:Web服务接受与返回的互联网媒体类型,比如:JSON,XML,YAML等。
  • 对资源的操作:Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。

 

下表列出了在实现RESTful API时HTTP请求方法的典型用途。

HTTP请求方法在RESTful API中的典型应用[1] 资源 GET PUT POST DELETE 一组资源的URI,比如http://example.com/resources/ 单个资源的URI,比如http://example.com/resources/142
列出URI,以及该资源组中每个资源的详细信息(后者可选)。 使用给定的一组资源替换当前整组资源。 在本组资源中创建/追加一个新的资源。该操作往往返回新资源的URL。 删除整组资源。
获取指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML、JSON等) 替换/创建指定的资源。并将其追加到相应的资源组中。 把指定的资源当做一个资源组,并在其下创建/追加一个新的元素,使其隶属于当前资源。 删除指定的元素。

PUT和DELETE方法是幂等方法。GET方法是安全方法(不会对服务器端有修改,因此当然也是幂等的),GET方法具有幂等性[指多个相同请求返回相同的结果]——如果你发送了一个GET请求没有得到结果,你可能不知道原因是请求未能到达目的地,还是响应在反馈的途中丢失了。幂等性保证了你可以简单地再发送一次请求解决问题。

 

 

不像基于SOAP的Web服务,RESTful Web服务并没有“正式”的标准。这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但大部分RESTful Web服务实现会使用HTTP、URI、JSON和XML等各种标准

 

实现举例

例如,一个简单的网络商店应用,列举所有商品,

GET http://www.store.com/products

呈现某一件商品,

GET http://www.store.com/product/12345

下单购买,

POST http://www.store.com/order
<purchase-order>
  <item> ... </item>
</purchase-order>

REST的优点

  • 可更高效利用缓存来提高响应速度
  • 通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
  • 浏览器即可作为客户端,简化软件需求
  • 相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
  • 不需要额外的资源发现机制
  • 在软件技术演进中的长期的兼容性更好 
分享到:
评论

相关推荐

    java rest api入门实例

    目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找...

    resf.pdf a tutorial of rest

    ### REST:一种分布式应用开发方式 #### 知识点一:REST的概念与历史背景 - **定义**:REST(Representational State Transfer)是一种用于构建网络应用程序的架构风格,由Roy Fielding在其博士论文中首次提出。 -...

    wcfrest的实现

    WCF(Windows Communication Foundation...学习和掌握WCF REST的实现,不仅有助于理解服务端开发,还能提高你在分布式系统设计和Web服务交互方面的技能。结合实践,你将能够创建高效、可扩展且易于使用的RESTful服务。

    使用DNS作为REST Web服务的发现机制1

    一个可能的解决方案是在媒体类型规范中定义服务类型,因为这是REST系统中定义资源表示的常见方式。例如,对于博客服务和搜索服务,可以创建特定的媒体类型来表示它们,并在DNS中关联这些类型与服务的URI。 通过这种...

    面向资源的架构:REST的另一面.doc

    通过逐步采用REST和语义网技术,我们可以构建出更强大、更具适应性的信息系统,同时恢复Web服务的愿景,实现更高效、更智能的信息交换。 总之,面向资源的架构和REST的实施,结合语义网的潜力,为构建下一代互联网...

    C# WEB API 安全认证源码 REST

    在C# Web API开发中,...综上所述,这个"C# WEB API 安全认证源码 REST"为开发者提供了一个实践性的安全认证解决方案,涵盖了从数据库配置到身份验证中间件的多个方面,对于学习和理解Web API的安全性具有很高的价值。

    C#.NETWeb服务开发

    REST(Representational State Transfer)是另一种流行的Web服务设计风格,强调资源的表示和状态转移。C#.NET可以通过ASP.NET Web API框架创建RESTful服务,使用HTTP动词(GET、POST、PUT、DELETE)来操作资源。 九...

    Web Service编程:用C#开发网络服务

    5. **REST(Representational State Transfer)**:REST是一种轻量级的架构风格,常用于创建现代Web服务。C#中的ASP.NET Web API框架允许开发者轻松创建RESTful服务,返回JSON或XML格式的数据。 6. **Web API和ASP...

    Java Web服务:构建与运行(第2版)第5章源代码

    - **UDDI(Universal Description, Discovery, and Integration)**:一种用于注册和发现Web服务的规范,可能会讲解如何注册和查找服务。 - **RESTful设计原则**:包括资源的URI设计、HTTP方法的正确使用(GET, ...

    三种主流的WebService实现方案.docx

    本文将深入探讨三种主流的Web服务实现方案:REST、SOAP和XML-RPC,以及它们之间的差异和适用场景。 首先,REST(Representational State Transfer,表征状态转移)是一种基于HTTP协议的轻量级架构风格。REST强调...

    REST开发指南

    **RESTful Web 服务** 作为一种更简单的替代方案,相较于 SOAP(Simple Object Access Protocol)具有以下优势: - **简洁性**:REST 使用标准 HTTP 方法(GET、POST、PUT、DELETE 等)进行操作,无需额外封装。 - *...

    WordPress插件:给REST API 新增文章特色图片(缩略图)字段,用于显示文章头图

    通过创建这样一个插件,我们能够使REST API更好地服务于现代Web开发的需求,为那些依赖API获取数据的前端应用提供更加丰富的文章信息,从而提高用户体验。此外,这也展示了WordPress插件开发的灵活性,以及开发者...

    用Java构建web服务

    REST(Representational State Transfer)是一种轻量级的Web服务设计风格,它强调资源的获取和操作。JAX-RS提供了一种直观的方式来创建REST服务,通过注解来定义HTTP方法、URI模板和消息体。 1. 服务端开发: - ...

    REST API 安全设计指南.pdf

    目前在三种主流的Web服务实现方案中,REST模式服务相比复杂的SOAP和XML-RPC对比来讲,更加简 洁,越来越多的web服务开始使用REST设计并实现。但其缺少安全特性,《REST API 安全设计指南》就 是一个REST API安全设计...

    soap和rest比较

    在众多实现Web服务的技术方案中,SOAP(Simple Object Access Protocol)与REST(Representational State Transfer)无疑是其中最为流行的两种方式。本文将基于提供的部分内容,深入探讨SOAP与REST之间的区别与联系...

    crystal report的 web 服务

    - **水晶报表服务器**:水晶报表服务器是实现Web服务的关键组件,它负责处理报表的存储、权限管理以及Web服务接口。 - **Web服务API**:水晶报表提供了Web服务API,开发者可以利用这些API来集成报表到自己的Web...

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...

Global site tag (gtag.js) - Google Analytics