`

REST理解

 
阅读更多
REST 本身是设计风格而不是标准。REST 谈论一件非常重要的事,如何正确地使用 Web标准

 

REST定义了应该如何正确地使用(这和大多数人的实际使用方式有很大不同)Web标准,例如HTTP和URI。如果你在设计应用程序时能坚持REST原则,那就预示着你将会得到一个使用了优质Web架构(这将让你受益)的系统。总之,五条关键原则列举如下:

  • 为所有“事物”定义ID  (所谓的”事物“即就是”资源“)
  • 将所有事物链接在一起
  • 使用标准方法
  • 资源多重表述
  • 无状态通信      

     1)为所有的事物定义ID

        在Web中,代表ID的统一概念是:URI。URI构成了一个全局命名空间,使用URI标识你的关键资源意味着它们获得了一个唯一、全局的ID。       

      第一个原则:使用URI标识所有值得标识的事物,特别是应用中提供的所有“高级”资源,无论这些资源代表单一数据项、数据项集合、虚拟亦或实际的对象还是计算结果等。

    2) 将所有事物链接在一起

      这个描述的核心是超媒体概念,换句话说:是链接的思想。链接是我们在HTML中常见的概念,但是它的用处绝不局限于此

     使用URI表示链接的优雅之处在于,链接可以指向由不同应用、不同服务器甚至位于另一个大陆上的不同公司提供的资源——因为URI命名规范是全球标准,构成Web的所有资源都可以互联互通。

超媒体原则还有一个更重要的方面——应用“状态”。简而言之,实际上服务器端为客户端提供一组链接,使客户端能通过链接将应用从一个状态改变为另一个状态。记住:链接是构成动态应用的非常有效的方式。

对此原则总结如下:任何可能的情况下,使用链接指引可以被标识的事物(资源)。也正是超链接造就了现在的Web。

    3)使用标准方法

    除了两个大家熟知的(GET和POST)之外,标准方法集合中还包含PUT、DELETE、HEAD和OPTIONS

 REST 要求开发人员显式地使用 HTTP 方法,并且使用方式与协议定义一致。 这个基本 REST 设计原则建立了创建、读取、更新和删除(create, read, update, and delete,CRUD)操作与 HTTP 方法之间的一对一映射。 根据此映射:

  • 若要在服务器上创建资源,应该使用 POST 方法。
  • 若要检索某个资源,应该使用 GET 方法。
  • 若要更改资源状态或对其进行更新,应该使用 PUT 方法。
  • 若要删除某个资源,应该使用 DELETE 方法。
  • HTTP Method 与 CURD 数据处理操作对应

    HTTP方法

    数据处理

    说明

    POST

    Create

    新增一个没有id的资源

    GET

    Read

    取得一个资源

    PUT

    Update

    更新一个资源。或新增一个含 id 资源(如果 id 不存在)

    DELETE

    Delete

    删除一个资源

     

 每一个方法都有其特定的使用范围,因此应该正确的使用这几个方法(如更新数据,虽然使用GET,变相也能完成,但是还是应该使用PUT方法)

在基于 REST 的 Web 服务中,协议已经对动词(POST、GET、PUT 和 DELETE)进行了定义。 在理想的情况下,为了保持接口的通用化,并允许客户端明确它们调用的操作,Web 服务不应该定义更多的动词或远程过程

 4)资源多重表述

       针对不同的需求提供资源多重表述。

       客户程序如何知道该怎样处理检索到的数据,比如作为GET或者POST请求的结果?原因是,HTTP采取的方式是允许数据处理和操作调用之间关系分离的。换句话说,如果客户程序知道如何处理一种特定的数据格式,那就可以与所有提供这种表述格式的资源交互。理想的情况下,资源表述应该采用标准格式——如果客户程序对HTTP应用协议和一组数据格式都有所“了解”,那么它 就可以用一种有意义的方式与世界上任意一个RESTful HTTP应用交互。不幸的是,我们不可能拿到所有东西的标准格式,但是,或许我们可以想到在公司或者一些合作伙伴中使用标准格式来营造一个小环境。当然以 上情况不仅适用于从服务器端到客户端的数据,反之既然——倘若从客户端传来的数据符合应用协议,那么服务器端就可以使用特定的格式处理数据,而不去关心客 户端的类型。

     在实践中,资源多重表述还有着其它重要的好处:如果你为你的资源提供HTML和XML两种表述方式,那这些资源不仅可以被你的应用所用,还可以被任意标准Web浏览器所用——也就是说,你的应用信息可以被所有会使用Web的人获取到。
      资源多重表述还有另外一种使用方式:你可以将应用的Web UI纳入到Web API中——毕竟,API的设计通常是由UI可以提供的功能驱动的,而UI也是通过API执行动作的。将这两个任务合二为一带来了令人惊讶的好处,这使得 使用者和调用程序都能得到更好的Web接口。

 

5)无状态通信 

指的的是服务端不保存状态,将状态信息保存在客户端

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    REST实战(REST in Practice)

    通过以上内容可以看出,《REST实战(REST in Practice)》不仅是一本介绍REST基本概念和技术的书籍,更重要的是它提供了一种实用的方法论,帮助读者理解如何将REST应用于现实世界的问题中,从而使分布式系统的设计更加...

    flowable-boot-rest_rest_flowableapi_flowableswagger_flowable_flo

    通过访问Swagger UI,开发者可以方便地浏览所有提供的REST API,并直接尝试调用,从而快速理解和使用Flowable REST服务。 为了使用这个项目,你需要: 1. 解压文件到本地。 2. 确保环境已经安装了Java和Maven。 3. ...

    白话REST-识别真假REST

    在理解REST时,应避免将其与RPC(Remote Procedure Call)简单等同,因为REST不仅仅是一系列HTTP方法的简单应用。 REST的核心理念在于资源的抽象、统一的接口以及状态的无状态传输。其中,“资源”指的是通过网络可...

    c++ rest sdk.rar

    7. **易用性**:C++ REST SDK的API设计遵循C++的现代编程原则,易于理解和使用。 在提供的压缩包中,有两个子目录:"x86-windows"和"x64-windows"。这表示库分别包含了32位和64位的编译版本,以满足不同系统的需求...

    Rest Severs in Delphi XE Using DataSnap

    首先,我们需要理解REST的基本概念。REST是一种软件架构风格,用于设计分布式系统,特别是Web服务。它强调资源的表示和通过HTTP协议进行操作,主要通过GET、POST、PUT、DELETE等方法进行数据交互。RESTful服务通常...

    ASP EXCEL导入SQL

    通常我们把REST也写作为REST/HTTP,在实际中往往把REST理解为基于HTTP的REST软件架构,或者更进一步把REST和HTTP看作为等同的概念。  今天,HTTP是互联网上应用最广泛的计算机协议。HTTP不是一个简单的运载数据的...

    谷歌浏览器插件+AdvancedRestClient+Http Rest API测试调试

    响应信息包括状态码、头部、体等,这些信息对于理解API的运行情况至关重要。 4. 分析响应:在响应部分,你可以查看HTTP状态码(如200表示成功,404表示未找到等),查看返回的数据结构,检查是否有预期的结果。如果...

    REST Server in Delphi XE Using DataSnap中文版

    无论是对于初学者还是有经验的开发者来说,这些知识都是非常宝贵的资源,不仅有助于理解 REST 架构的基本原理,还能掌握如何使用 Delphi XE 和 DataSnap 来高效地实现 REST 服务。此外,文章还介绍了如何利用 JSON ...

    REST参考技术文档

    Roy Fielding在2000年的博士论文中首次提出了REST架构风格,中文版的论文可以帮助我们深入理解这一概念。 《什么是REST.doc》可能会详细解释REST的基本原理和核心概念,如客户端-服务器、无状态、缓存、层式系统...

    REST地图与天地图叠加

    在IT行业中,地图服务是地理信息系统(GIS)的重要组成部分,用于展示、分析和管理地理数据。本示例探讨的主题是“REST地图与天地图叠加”,这涉及到...通过深入理解和实践,开发者可以创建出更加丰富、实用的GIS应用。

    WCF REST service test

    REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,使得API更易于理解和使用。在本项目中,“WCF REST Service Test”是一个用于测试WCF REST服务的应用程序,它提供...

    cpprest实例工程

    cpprest库,全称是Casablanca,是由微软开发的一个C++ REST(Representational State Transfer)编程库,主要用于构建云应用...同时,这也是一个很好的实践平台,可以帮助我们更好地理解和掌握C++中的RESTful服务交互。

    C# 实现Rest服务接口,含实现文档

    本项目“C# 实现Rest服务接口,含实现文档”将详细介绍如何使用C#和ASP.NET框架来构建RESTful服务。 1. **C#语言基础**:C#是Microsoft开发的一种面向对象的编程语言,常用于Windows平台的应用程序开发,尤其在.NET...

    dubbox 2.8.4 rest调用

    通过这个项目,开发者可以深入理解dubbox如何与REST结合,实现微服务之间的通信。同时,也可以学习到如何在实际项目中配置和使用dubbox,以及如何编写和测试RESTful API。这对于提升分布式系统设计和开发能力,特别...

    kettle rest 接口 请求实例

    首先,我们要理解REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,允许客户端通过HTTP方法(如GET、POST、PUT、DELETE等)来访问和操作服务器上的资源。在Kettle中...

    REST in practice,英文

    这本书“REST in Practice”深入探讨了REST原则和最佳实践,旨在帮助开发者更好地理解和实施RESTful服务。 REST的核心概念是资源(Resource)、URI(统一资源标识符)和表现层(Representation)。资源是REST架构中...

    Rest服务搭建范例

    REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,用于构建Web服务,尤其适用于互联网应用程序。REST服务基于HTTP协议,通过URI(统一资源标识符)来定位资源,并使用HTTP方法(如GET、...

    REST WebService简单应用

    学习和理解REST Web Service的基本概念和实践,以及如何使用JAX-RS进行开发,对于构建可扩展、易于维护的Web服务至关重要。通过实际动手编写和运行提供的示例,你可以更好地理解和掌握这些知识。

    Django-REST-framework教程中文版

    Django-REST-framework教程中文版是一份...此外,教程是基于翻译和作者个人阅读文档的产物,因此在理解上可能存在偏差,读者在学习时应当与官方文档相互印证,并且积极寻找社区资源和讨论来弥补教程可能存在的不足。

    什么是REST,符合REST的API叫RESTful 两种SOA接口实现:SOAP(WebService) vs REST

    文件`rest(一种软件架构风格)_百度百科.url`和`SOA接口的两种常用实现比较:SOAP(WebService) vs REST(GET,POST).url`分别指向了关于REST和SOAP/REST比较的参考资料,它们可以进一步深入理解这两种接口实现的区别...

Global site tag (gtag.js) - Google Analytics