第 1 部分:什么是 REST 在这一部分中,我们将仔细研究客户端和服务器之间如何进行通信。在此过程中,我们将揭示新术语并对其进行解释。 为了让一切变得清晰,我们将使用一些 RESTful 应用程序的示例来分析客户端-服务器通信。假设我们正在开发一个能够存储有关客户及其订单信息的 Web 应用程序。那些。我们的系统能够操纵一些实体:创建它们、编辑它们、删除它们以及提供有关它们的信息。这些实体将是:
- 客户——客户;
- 订单——客户订单;
- 物品——货物。
要求
客户端请求几乎总是通过 HTTP 发出。一般来说,HTTP 请求由以下几个部分组成:- HTTP 方法;
- 标题;
- 统一资源定位符;
- 请求正文。
URI 和资源
客户端通过请求获取或修改的数据称为资源。客户端-服务器交互的基础是资源的操作。 REST 中的资源是任何可以命名的东西。从某种意义上说,它们就像 Java 中的类。在 Java 中,我们可以为任何东西创建一个类。在 REST 中也是一样 - 资源可以是任何东西:用户、文档、报告、订单。所有这些可以是某个实体的抽象,也可以是具体的东西,例如文件 - 图片、视频、动画、PDF 文件。对于我们的示例,我们有 3 个资源:- 客户——客户;
- 订单——客户订单;
- 物品——货物。
- /clients - 所有现有客户端的 URI;
- /clients/23 - 特定客户端的URI,即ID=23的客户端;
- /clients/4 - 特定客户端的URI,即ID=4的客户端。
- /clients/4/orders — 4号客户端所有订单的URI;
- /clients/1/orders/12 - 1号客户的12号订单的URI。
- /clients/1/orders/12/items — 1 号客户制作的 12 号订单中所有产品列表的 URI。
HTTP方式
HTTP Method(英文HTTP Method)是除控件和分隔符之外的任意字符的序列,它指示对资源的主要操作。有几种常见的 HTTP 方法。我们列出了 RESTful 服务中最常用的那些:- GET——用于获取有关特定资源(通过ID)或资源集合的信息;
- POST——用于创建新资源;
- PUT - 用于更改资源(通过 ID);
- DELETE - 用于删除资源(通过 ID)。
标题
请求和响应都包含 HTTP 标头。他们发送有关请求(或响应)的附加信息。标头是键值对。您可以在维基百科页面上阅读最常见标题的列表。使用 REST,客户端通常可以在其请求中向服务器发送 Accept 标头。需要让服务器知道客户端期望以什么格式接收其响应。所谓的 MIME 类型列表中提供了各种格式选项。 MIME(多用途互联网邮件扩展)是一种对信息进行编码和格式化消息以便可以通过互联网发送的规范。每个 MIME 类型由两部分组成,用斜杠分隔:类型和子类型。不同类型文件的 MIME 类型示例:- 文本 - 文本/纯文本、文本/css、文本/html;
- 图像 - 图像/png、图像/jpeg、图像/gif;
- 音频 - 音频/wav、音频/mpeg;
- 视频 - 视频/mp4、视频/ogg;
- 应用程序 - 应用程序/json、应用程序/pdf、应用程序/xml、应用程序/八位字节流。
Accept:application/json
该标头告诉服务器客户端希望收到 JSON 格式的响应。
请求正文
客户端向服务器发送的消息。请求是否有正文取决于 HTTP 请求的类型。例如,GET 和 DELETE 请求通常不包含任何请求正文。但 PUT 和 POST 可以包含:这一切都与请求类型的功能目的有关。毕竟,要通过 id(在 URL 中传输)接收数据并删除它,不需要向服务器发送额外的数据。但要创建新资源(POST 请求),您需要传输此资源。修改现有资源也是如此。在 REST 中,最常使用 XML 或 JSON 格式来传输请求正文。最常见的格式是 JSON。假设我们要向服务器发送请求,并在其中创建一个新资源。如果您还记得,作为示例,我们查看了一个管理客户订单的应用程序。假设我们要创建一个新客户端。在我们的例子中,我们存储有关客户的以下信息: 姓名 电子邮件 电话号码 那么此类请求的正文可能是以下 JSON:{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+7 (191) 746-43-23"
}
将请求放在一起
因此,我们研究了客户端请求可以包含哪些内容。现在让我们给出一些带有描述的查询示例要求 | 描述 |
---|---|
|
获取23号客户的json或xml格式信息 |
|
使用以下字段创建一个新客户: 姓名 - Amigo 电子邮件 - amigo@jr.com 电话。— +7 (191) 746-43-23 |
|
按如下方式编辑客户#1: 姓名 - Ben 电子邮件 - bigben@jr.com 电话。— +380 (190) 346-42-13 |
|
从系统中删除12号客户的6号订单 |
答案
让我们简单介绍一下服务器的响应。答案通常由以下部分组成:- 响应代码;
- 标头;
- 响应体。
HTTP 响应代码
让我们仔细看看 HTTP 响应代码。以下是维基百科的引用: HTTP 状态代码是通过 HTTP 协议请求的服务器响应的第一行的一部分。它是一个具有三位小数的整数。第一个数字表示状况的类别。响应代码后面通常是由空格分隔的英文解释性短语,向用户解释此特定响应的原因。例子:- 201 创建;
- 401 未经授权;
- 507 存储空间不足。
- 1ХХ - 信息性;
- 2ХХ - 告知成功接受和处理客户请求的案例;
- 3XX——通知客户端为了成功完成操作,需要再次发出请求,通常使用不同的URI;
- 4ХХ - 客户端错误。例如,错误构造的请求或众所周知的 404 Not Found 代码,当客户端请求不存在的资源时可能会发生这种情况;
- 5ХХ - 服务器错误。如果由于服务器故障导致操作失败,则返回给客户端。
GO TO FULL VERSION