当前位置: 首页>后端>正文

ribbon实现rest客户端 rest api应用

随着 REST 成为大多数 Web 和 Mobile 应用的默认选择,势必要对它的基本原理有所了解。

在它提出十多年后的今天,REST 已经成为最重要的 Web 应用技术之一。随着所有技术朝着 API 方向发展,它的重要性有可能持续快速地增长。每门主要编程语言现在已经包含构建 RESTful Web 服务的框架。同样地,Web 开发者和架构师对 REST 和 RESTful 服务有一个清晰的理解是很重要的。这篇教程解释了 REST 架构,然后研究使用它构建通用地基于API的任务的细节。

什么是 REST

REST 代表表述性状态转移(representational state transfer),它是一种网络化超媒体应用的架构风格。它主要是用于构建轻量级的、可维护的、可伸缩的 Web 服务。基于 REST 的服务被称为 RESTful 服务。REST 不依赖于任何协议,但是几乎每个 RESTful 服务使用 HTTP 作为底层协议。

RESTful 使用HTTP post(创建、更新)数据、读取数据、删除数据。使用HTTP实现CRUD(创建、读取、更新、删除)操作。

RESTful 服务特点:

每个系统都使用资源。这些资源可以是图片,视频文件,网页,商业信息,或者在基于计算机的系统中可以被代表的任何事物。服务的目的是提供一个窗口给客户端以便客户端能访问这些资源。服务架构师和开发人员想要这些服务变得易于实现、维护、扩展、伸缩。RESTful 架构允许这些,甚至更多。一般来说,RESTful 服务应该有下面的属性和特征,也就是我要详细描述的内容:

模型表示(Representations)
消息(Messages)
URIs
一致接口(Uniform interface)
(无状态)Stateless
资源之间的链接(Links between resources)
缓存(Caching)
模型表示(Representations)

RESTful 服务的焦点在资源上和怎么提供对资源的访问。资源很容易被认为和OOP中的对象一样。一个资源能由其他资源组成。当设计一个系统的时候,第一件要做的事情是定义资源和决定资源之间的关系。这有点像设计数据库的第一步。定义实体和关系。

一旦我们定义了资源,接下来我们需要找到一种用于在系统中表示这些资源的方法。你可以使用任何格式来表示资源。REST 对此没有限制。

例如,根据你的需求,你可以决定使用 JSON 或者 XML。如果你在构建 Web 服务,此服务用于 Web 页面中的 AJAX 调用,那 JSON 是很好地选择。 XML 可以用来表示比较复杂的资源。例如一个被称为“Person”的资源可以表示如下:

列表1:资源的JSON 表示。

{ 
 “ID”: “1”, 
 “Name”: “M Vaqqas”, 
 “Email”: “m.vaqqas@gmail.com”, 
 “Country”: “India” 
 }


列表2:资源的XML 表示。

1 
 M Vaqqas 
 m.vaqqas@gmail.com 
 India



实际上,你可以使用不止一种的格式并且决定使用其中哪一种用于依赖于客户端类型或一些请求参数的响应。无论使用哪个格式,好的模型表示(representation )应该具有以下明显的特征:

客户端和服务端应该能够理解这种模型表示(representation )的格式。
模型表示(representation )应该能够完整的表示资源。如果需要表示部分资源,然后你需要考虑将资源分解成子资源。分割大资源到更小的资源同样允许你传递更小的表现。较小的模型表示(representation)意味着更少的时间来创建和传输。这也意味着更快的服务。
模型表示(representation)应该能够互相链接资源。可以通过替换 URI 或者是唯一 ID。
消息(Messages)

客户端和服务端经由消息相互沟通。客户端发送请求到服务器,服务器使用响应答复。除了实际的数据,这些信息也包含一些关于消息的元数据。对于设计 RESTful 服务了解 HTTP 1.1的请求格式和响应格式是很重要的。

HTTP 请求

图1中展示了HTTP请求格式。

图1:HTTP 请求格式

GET, PUT, POST, DELETE, OPTIONS等等 HTTP 方法的一种。

资源的URI。操作将在这个 URI 上执行。

HTTP 版本,通常是“HTTP v1.1”。

包含 header 键值对集合的元数据。这些设置包含消息的信息和发送者像客户端的类型,客户端支持的格式,消息体的格式类型,响应的缓存设置,和许多信息。

是实际的消息内容。在 RESTful 服务中,这就是消息中资源表示的位置。

在 HTML 消息中没有标签和标识标记区块的开始或结束。

列表三是简单的 POST 请求消息,这个请求想要插入一条新的 Person 资源。

列表3:简单 POST 请求

POST http://MyService/Person/ 
 Host: MyService 
 Content-Type: text/xml; charset=utf-8 
 Content-Length: 123



https://www.xamrdz.com/backend/3nc1937448.html

相关文章: