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应用交互。不幸的是,我们不可能拿到所有东西的标准格式,但是,或许我们可以想到在公司或者一些合作伙伴中使用标准格式来营造一个小环境。当然以 上情况不仅适用于从服务器端到客户端的数据,反之既然——倘若从客户端传来的数据符合应用协议,那么服务器端就可以使用特定的格式处理数据,而不去关心客 户端的类型。
5)无状态通信
指的的是服务端不保存状态,将状态信息保存在客户端
相关推荐
通常我们把REST也写作为REST/HTTP,在实际中往往把REST理解为基于HTTP的REST软件架构,或者更进一步把REST和HTTP看作为等同的概念。 今天,HTTP是互联网上应用最广泛的计算机协议。HTTP不是一个简单的运载数据的...
这篇论文定义了一个框架,致力于通过架构风格来理解软件架构,并且展示如何使用风格来指导基于网络的应用的架构设计。本文使用了一个对基于网络的应用的架构风格的调查, 根据不同的风格在分布式超媒体的架构中所...
介绍REST实践的书,很不错,有助于理解REST。
最初开始接触web service的时候,所有的材料上来就是一大堆的名词,SOAP, WSDL,看得头都要大了,后来提出来的REST就容易理解得多,虽然目前SOAP在企业级的web service中还有一席之地,但是在公共的Internet上,不是...
REST是中文翻译为表征状态转移(英文:Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。从字面意思来说,“表述”是很难理解是什么东西的?从论文上我们可以...
尽管如此,对于REST这个泊来品的理解,大多数人(包括一些资深的架构师)仍然停留在“盲人摸象”的阶段。常常听到各种各样关于REST的说法,例如:有人说:“我们这套新的API决定不用WebService(SOAP+WSDL),而是...
OpenAPI Specification 的目标是为 REST API 定义一个标准的、与语言无关的接口,允许人和计算机在不访问源代码、文档或通过网络的情况下发现和理解服务的功能。 通过 OpenAPI 的正确定义,消费者可以用最简答的...
django-rest-framework-tutorial 算是翻译的比较好的资料 跟着官网上做不理解,好不容易找到的资料
REST 并非标准,而是一种开发 Web 应用的架构风格,可以将其理解为一种设计模式。REST 基于 HTTP,URI,以及 XML 这些现有的广泛流行的协议和标准,伴随着 REST,HTTP 协议得到了更加正确的使用。 相较于基于 SOAP ...
切记不要自动换行! 全是我自己对它的理解和查看源码来进行中文注解的,如果注解有错请联系我进行修改。
REST架构风格是全新的针对Web应用的开发风格,是当今世界最成功的互联网超媒体分布式系统架构,它使得人们真正理解了Http协议本来面貌。随着 REST架构成为主流技术,一种全新的互联网网络应用开发的思维方式开始流行...
它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。 以下内容摘自阮一峰的文章: 一、起源 REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。 二、名称 Fielding将他对...
的作用和资源处理的内容,从而允许机器和人类理解 API 应该做什么。 REST Builder 使用 JAX-RS 规范(JAVA EE 标准之一)和 GraphQL servlet 生成 API 资源模型层和 API 实现层。 生成工具实现了访问API合约中定义的...
rest框架cetia4的教程 特点:基于Servlet API开发,可以运行于所有的Web容器中。 优点: 1. 可以充分利用Servlet API和JSP等资源,需要额外学习的概念较少,学习成本较低。 2. 对于传统的Web应用,可以使用服务器...
如果请求格式错误,即不是按照FortiGate可以理解的格式,它将失败。 要编写新的netconf请求,请使用FGT REST API架构。 检查: : 目前支持cmdb和monitor命令。 目前尚不支持某些特殊操作,例如带有POST请求的监视...
REST-VS-BPEL 此项目由D.González,A.Gherman,M.Gordo,PE Dalidec和S.Hsaini进行,是DTU 2013-2014年Web服务课程的项目。 该项目介绍了一家名为TravelGood的旅行公司。 该公司提供了一项网络服务,客户可以通过该...
本项目是对的分析,方便对rest_framework进行二进制解读,加深对rest_framework框架的理解。 我将在个人博客上配合详细文字说明对二进制分析的思路进行介绍,如果你同时学习rest_framework,替换本项目下载到你的...
GitHub的REST API OpenAPI说明该存储库包含描述。什么是OpenAPI?根据: OpenAPI规范(OAS)为HTTP API定义了标准的,与编程语言无关的接口描述,使人和计算机都可以发现和理解服务的功能,而无需访问源代码,其他...
java笔试题从一个圈内Java-Serenity-RestAssured-Cucumber-JUnit-Maven 示例 API 自动化解决方案 介绍 这是一个示例 Rest ...模式设计,代码库根据用户操作和问题分类为域模型包,以理解/验证结果。