RESTful API 中的请求和响应格式

· 约 9 分钟读完

RESTful API 是目前最流行的 Web API 设计架构之一,它以 HTTP 协议为基础,提供了一组标准的请求和响应格式,使得开发者能够快速、灵活地构建高效的 Web 服务。在本文中,我们将深入探讨 RESTful API 中的请求和响应格式,包括 HTTP 方法、请求头、请求体、响应状态码、响应头和响应体等内容。

HTTP 方法

HTTP 协议定义了若干个请求方法或动作,其中最常用的包括 GET、POST、PUT、DELETE 和 PATCH 等,它们分别表示从服务器获取资源、向服务器提交更新、向服务器新增资源、从服务器删除资源和向服务器部分修改资源等操作。在 RESTful API 中,每个资源都应该有一个唯一的标识符——URI(统一资源标识符),同时应该有一个对应的 HTTP 方法来进行操作。例如:

  • GET /api/users:获取所有用户列表
  • POST /api/users:新增一个用户
  • PUT /api/users/{id}:更新一个用户的信息
  • DELETE /api/users/{id}:删除一个用户

请求头

HTTP 请求头包含了一些元数据,用于指定请求的属性和选项。常用的请求头包括:

  • Accept:指定客户端期望接收的响应数据类型和格式,例如 application/json、text/xml 等
  • Authorization:指定请求的身份验证信息,例如 Basic、Bearer 等
  • Content-Type:指定请求体的格式和编码方式,例如 application/json、multipart/form-data 等
  • Cookie:指定客户端的会话标识信息,通常用于保持登录状态
  • User-Agent:指定客户端的类型和版本信息,例如 Mozilla/5.0、Chrome/92.0.4515.159 等

可以通过开发者工具或第三方库来自定义请求头,例如:

请求体

HTTP 请求体包含了一些数据,用于向服务器提交表单、文件、JSON 等信息。在 RESTful API 中,请求体通常用于 POST、PUT 和 PATCH 等方法。请求体的格式和编码方式取决于请求头的 Content-Type 值。常用的请求体格式包括:

  • application/json:发送 JSON 格式的数据,通常使用 JSON.stringify 将 JavaScript 对象转换为字符串
  • application/x-www-form-urlencoded:发送 URL 编码格式的数据,通常使用 URLSearchParams 将 JavaScript 对象转换为字符串
  • multipart/form-data:发送表单数据和文件,通常使用 FormData 构造函数将表单项转换为 FormData 对象

例如,发送 JSON 数据的示例代码如下:

发送 URL 编码格式的数据的示例代码如下:

发送表单数据和文件的示例代码如下:

响应状态码

HTTP 响应状态码表示服务器对请求的处理结果,常用的状态码和含义包括:

  • 200 OK:请求成功,响应包含所请求的数据
  • 201 Created:请求成功,服务器创建了新的资源并返回了标识符
  • 204 No Content:请求成功,但是响应不包含任何数据
  • 400 Bad Request:请求失败,客户端发送的数据格式不正确或者缺少必要的请求参数
  • 401 Unauthorized:请求失败,客户端未提供正确的身份验证信息
  • 403 Forbidden:请求失败,客户端没有权限执行该请求
  • 404 Not Found:请求失败,请求的资源不存在或者 URL 格式不正确
  • 500 Internal Server Error:请求失败,服务器内部发生了错误

在处理响应时,通常需要根据状态码进行判断和处理,例如:

响应头

HTTP 响应头包含了一些元数据,用于指定响应的属性和选项。常用的响应头包括:

  • Content-Type:指定响应体的格式和编码方式,例如 application/json、text/html 等
  • Set-Cookie:指定服务器返回的会话标识信息,通常用于创建新的会话或者更新会话状态
  • ETag:指定响应内容的唯一标识符,可以用于缓存和验证数据
  • Last-Modified:指定响应内容的最后修改时间,可以用于缓存和验证数据

可以通过 response 对象的 headers 属性来获取响应头的值,例如:

响应体

HTTP 响应体包含了服务器返回的数据,通常采用 JSON、XML、HTML 等格式。在 RESTful API 中,响应体应该根据请求的结果进行标准化,例如 GET 请求返回资源列表或者资源单个实例,POST 请求返回新增的资源标识符,PUT 和 PATCH 请求返回空的响应体或者更新后的资源实例,DELETE 请求返回空的响应体或者删除成功的标识符。例如:

  • GET /api/users:返回用户列表
  • POST /api/users:返回新增用户的标识符
  • PUT /api/users/101:返回更新后的用户实例
  • DELETE /api/users/101:返回空的响应体

由于响应体的格式和内容可能会影响客户端的使用体验和性能,因此需要在设计 API 时合理地定义响应体的结构和内容,以达到最佳的交互效果。同时,还需要考虑缓存、压缩、分页等方案来提升响应体的处理效率。

结语

本文深入介绍了 RESTful API 中的请求和响应格式,包括 HTTP 方法、请求头、请求体、响应状态码、响应头和响应体等内容。这些标准化的格式和规范使得开发者能够快速构建高效的 Web 服务,提高开发效率和代码质量。同时,本文也提供了一些示例代码和最佳实践,可供开发者参考和借鉴。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d81298a941bf7134e69c5a