REST API简介

从REST API的创建者和使用者的角度来看,什么是REST API

API代表应用程序编程接口,它是一个笼统的术语,用于标识不同的事物。

我们了解了浏览器如何以可用功能的形式提供一些API。

我们看到了Node.js如何为我们提供带有默认模块的编程API。

API还意味着另一件事:创建一个服务,该服务公开一些特定功能,该功能是通过可被多个客户端访问的服务器提供的。

广义地说,我们目前有2类API:REST API和GraphQL API。

存在其他种类的API范例,例如SOAP,但是它们在JavaScript世界中并不十分流行。

在本文中,我们将讨论REST API。

终点

在REST API中,我们创建了许多终点客户端可以访问的。

假设我们要公开人员名单。我们可以创建一个端点来响应/people 路线

如果我们的服务在域上侦听test.com,我们有test.com/people网址。

该端点将以任何格式提供数据,但通常我们使用JSON格式,一种方便的基于文本的格式,用于在两个服务之间传递数据。

/people端点可以提供人员姓名列表,并且id对于每个人。这可能是id例如,我们用来将它们存储在数据库中。

我们的系统还可以公开另一个端点,我们可以称之为/person。这接受id唯一地标识一个人,例如:/person/1

我们的API将提供有关该人的更多信息,例如年龄,电子邮件,地址。

需要注意的重要一点是,在第一个端点中,我们没有任何参数,但是这次我们有一个。

可以以不同的方式发送参数,并且并非所有端点都将用于从服务器发送信息。我们将很快看到,其他一些端点将用于执行操作。

方法

我提到/people端点将返回我们系统中的人员列表。

这只是一个简化,是时候进行更深入的研究了。

REST API使用HTTP协议原理,基于以下内容提供不同的功能:HTTP方法用过的:GETPOSTPUTDELETE

GET是最常见的一种。当客户端使用GET方法调用我们的API终结点时,它表示要读取数据。

GET /people将返回人员列表。

GET /person/1将返回一个人的详细信息。

当HTTP方法是POST,含义是完全不同的。端点将是相同的,但所需的操作将是另一个。

作为API构建器,我们定义了什么是什么。

例如,我们可以创建一个POST /person端点,该端点在被调用时会在数据库中创建一个新人。

它以我们可以选择的预定义格式从客户端接收数据。我们将很快看到使用Express制作的示例。

GETPOST是使用的主要两个动词。

有时候我们用PUTDELETEPUT有时用于更新资源,例如更改人员的地址。DELETE用于删除资源。

其他时候POST用于所有不读书的地方GET用来。

我们可以自由选择。

所谓资源,是指一个实体,就像复数形式的人一样,/people,或者在一个人的情况下/person

命名API端点

看我怎么用/people/person以上。

那些是名词

最佳做法是使用名词作为终结点,并使用HTTP方法来发信号通知操作。

更新一个人使用POST要求/person端点。

如果您想创建一个API来向某人发送消息,则需要创建一个POST请求使用/message端点,向其传递数据以识别该人和您要发送的消息。

REST API是无状态的

REST API是无状态的。

这意味着在不同的请求之间它没有任何内存。

您可以找到的大多数API都实现了API密钥机制,该机制可用来跟踪谁在调用API,并提供一种监视使用和强制限制的方式。

还可以使用登录名/密码机制来保护API。在这种情况下,API身份验证过程将需要考虑提供令牌的握手过程,该令牌随后需要在以后的每个请求中发送,以标识用户和正确的授权。

回应

API调用将以两种形式向用户返回响应:HTTP响应状态代码和HTTP响应正文。

每个HTTP请求都有一个状态码。

关于HTTP响应状态代码,我们有一些约定:当您使用浏览器打开网页时,该页面将返回一个200 OK状态码。如果找不到该页面,则404 NOT FOUND状态码。

同样适用于我们的API。

常见的有:

  • 200 OK:这是成功HTTP请求的标准响应。
  • 201 Created:通常是对POST请求的响应。该请求已完成,并且已经创建了新资源。
  • 400 Bad Request由于客户端上生成了请求错误,因此服务器无法处理该请求。错误可能包括格式错误的请求,大小太大而无法处理的错误或其他
  • 401 Unauthorized在需要身份验证且未授权客户端时发送
  • 403 Forbidden由于各种原因,该资源不可用。如果原因是身份验证,请使用401未经授权状态码。
  • 404 Not Found找不到请求的资源。
  • 405 Method Not Allowed该资源无法通过该HTTP方法使用,但可能与其他资源一起使用。
  • 500 Internal Server Error通用服务器错误消息,在遇到意外情况且没有其他更具体的消息时给出。

您可以在以下位置找到完整列表HTTP状态代码列表。需要注意的是,在创建API时,您应始终返回正确的状态代码,以通知您的客户。

响应主体通常是带有请求数据的JSON响应,或者是错误消息。

消息构建方式的详细信息由您,API构建者或构建API的人决定。


更多网络教程: