从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方法用过的:GET
,POST
,PUT
,DELETE
。
GET
是最常见的一种。当客户端使用GET方法调用我们的API终结点时,它表示要读取数据。
GET /people
将返回人员列表。
GET /person/1
将返回一个人的详细信息。
当HTTP方法是POST
,含义是完全不同的。端点将是相同的,但所需的操作将是另一个。
作为API构建器,我们定义了什么是什么。
例如,我们可以创建一个POST /person
端点,该端点在被调用时会在数据库中创建一个新人。
它以我们可以选择的预定义格式从客户端接收数据。我们将很快看到使用Express制作的示例。
GET
和POST
是使用的主要两个动词。
有时候我们用PUT
和DELETE
:PUT
有时用于更新资源,例如更改人员的地址。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的人决定。
更多网络教程:
- WebSockets简介
- HTTP请求如何工作
- HTTP请求标头列表
- HTTP响应标头列表
- HTTP与HTTPS
- 什么是RFC?
- HTTP协议
- HTTPS协议
- HTTP请求的curl指南
- HTTP缓存
- HTTP状态代码列表
- 什么是CDN?
- HTTP / 2协议
- 什么是港口
- DNS,域名系统
- TCP协议
- UDP协议
- REST API简介
- 如何在macOS中安装本地SSL证书
- 如何生成本地SSL证书
- 如何为HTTPS配置Nginx
- 一个简单的Nginx反向代理,用于从子文件夹中提供多个Node.js应用程序
- 什么是反向代理?