REST API介绍

本文,将从REST API的创建者和使用者的角度来向大家介绍什么是 REST API。

REST API介绍

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

我们了解了浏览器如何以可用函数的形式提供一些APIs。

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

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

一般来说,我们目前有两类APIs: REST APIs和GraphQL APIs。

其他类型的API范例也存在,比如SOAP,但是它们在JavaScript世界中不是很流行。

在这篇文章中,我们将讨论REST APIs。

端点

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

假设我们想要暴露一个人的名单。我们可以创建一个端点来响应/people路由。

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

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

这个/people端点可以提供人名列表和每个人的id。例如,这可能是我们用来在数据库中存储它们的id。

我们的系统还可以公开另一个端点,我们可以调用/person。它接受一个唯一标识一个人的id,就像这样:/person/1

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

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

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

方法

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

这是一个简化,现在是深入挖掘的时候了。

REST API使用HTTP协议原则根据所使用的HTTP方法提供不同的功能:GET、POST、PUT、DELETE。

GET是最常见的一种。当客户端使用GET方法调用我们的API端点时,它会发出想要读取数据的信号。

GET /people将返回一个人员列表。

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

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

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

它从客户端接收数据,以我们可以选择的预定义格式。我们很快就会看到一个使用Express的例子。

GET和POST是最常用的两个动词。

有时我们使用PUT和DELETE: PUT有时用于更新资源,比如更改某人的地址。DELETE用于删除资源。

其他时候,POST用于非查看内容,而GET用于查看内容。

我们可以随便选择。

我们所说的资源指的是一个实体,例如复数形式的人 /people ,或者单数形式人 /person 。

命名API端点

上节中的/people和/person。

这些都是名词。

使用名词作为端点,并使用HTTP方法作为动作的信号,被认为是一种最佳实践。

更新person使用到/person端点的POST请求。

如果您想创建一个API来将消息发送给一个人,您可以使用一个/message端点发出一个POST请求,将数据传递给它来识别这个人和您想发送的消息。

无状态性

REST API是无状态的。

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

但是大多数API都实现了一种API键机制,用于跟踪谁在调用API,并提供一种监视使用和强制限制的方法。

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

响应

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

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

我们有一些关于HTTP响应状态代码的约定:当您使用浏览器打开一个web页面时,页面将返回一个200 OK状态码,如果页面没有找到,则显示404 not found状态码。

常见状态码如下:

  • 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:内部服务器错误一个通用的服务器错误消息,当遇到意外情况时给出,没有更具体的消息是合适的。

响应体通常是以JSON格式响应,包含所请求的数据或一条错误消息。

(0)
上一篇 2020年5月9日 下午12:56
下一篇 2020年5月10日 上午10:07

发表回复

登录后才能评论