从底层开始学习 RESTful API

· 约 7 分钟读完

RESTful API 是目前最流行的 API 设计风格之一,它的优势在于简单、灵活、可扩展、易于理解和实现。本文将介绍 RESTful API 的概念、设计原则、HTTP 方法、状态码、资源和示例代码等内容,帮助前端工程师深入学习和应用 RESTful API 技术。

什么是 RESTful API?

REST 是 Representational State Transfer 的缩写,翻译为“表现层状态转化”,是一种基于 HTTP 协议的软件架构风格。RESTful API 是符合 REST 风格的 API,它将资源(Resource)作为核心概念,通过 HTTP 协议的 GET、POST、PUT、DELETE 等方法对资源进行操作,返回 JSON、XML 等格式的数据。

RESTful API 的设计原则包括:

  • 客户端-服务端(Client-Server):客户端和服务端分离,彼此独立,通过接口进行通信。
  • 无状态(Stateless):每个请求都包含足够的信息,让服务端可以理解和处理请求,不需要保存客户端的状态。
  • 缓存(Cacheable):服务端可以对响应进行缓存,提高性能和可扩展性。
  • 统一接口(Uniform Interface):客户端和服务端之间的通信通过标准化的接口进行,包括资源标识符(URI)、HTTP 方法、状态码和表示(Representation)等。
  • 分层系统(Layered System):客户端不需要知道服务端的内部结构和实现方式,服务端可以通过多层架构进行优化和安全性保障。
  • 按需代码(Code-On-Demand,可选):服务端可以通过传输代码的方式扩展客户端的功能,但不是必须的。

HTTP 方法

HTTP 是 RESTful API 最常用的协议,它定义了一些常用的方法,包括:

  • GET:获取资源,不改变资源的状态。
  • POST:创建资源,改变资源的状态。
  • PUT:更新资源,改变资源的状态。
  • DELETE:删除资源,改变资源的状态。
  • HEAD:获取资源的元数据,不返回资源本身。
  • OPTIONS:获取资源的可选项,包括支持的方法、头信息等。
  • PATCH:更新资源的部分内容,改变资源的状态。

HTTP 方法的使用应该符合语义化的要求,即 GET 方法用于获取资源,POST 方法用于创建资源,PUT 方法用于更新资源,DELETE 方法用于删除资源。同时,HTTP 方法应该与资源的状态转换相对应,例如用 POST 方法创建资源,用 PUT 方法更新资源,用 DELETE 方法删除资源等。

状态码

HTTP 状态码用于表示请求和响应的状态,包括以下几类:

  • 1xx:信息性状态码,表示请求被接收,继续处理。
  • 2xx:成功状态码,表示请求被成功处理,响应结果在响应体中。
  • 3xx:重定向状态码,表示需要进一步操作才能完成请求,例如跳转到另一个 URL。
  • 4xx:客户端错误状态码,表示请求无效或不符合规范,例如 404 Not Found 表示请求的资源不存在。
  • 5xx:服务器错误状态码,表示服务器无法完成请求,例如 500 Internal Server Error 表示服务器内部错误。

RESTful API 的设计应该合理使用状态码,例如用 201 Created 表示成功创建资源,用 204 No Content 表示成功删除资源,用 400 Bad Request 表示请求参数错误,用 401 Unauthorized 表示未授权访问等。

资源

RESTful API 的核心在于资源,资源是指客户端可以访问的任何东西,例如用户、文章、评论、图片等。每个资源都应该有一个唯一的标识符(URI),可以通过 HTTP 方法对其进行操作。资源的表示应该是无歧义的,例如用 JSON 或 XML 格式表示,同时应该包含足够的信息,让客户端可以理解和处理资源。

资源的设计应该符合 RESTful API 的设计原则,例如资源的标识符应该是语义化的、易于理解的,资源的状态转换应该符合 HTTP 方法的语义,资源的表示应该是可扩展的、易于理解的等。

示例代码

下面是一个简单的 RESTful API 的示例代码,包括资源的设计、HTTP 方法的使用、状态码的返回和错误处理等。

在上面的代码中,我们使用了 Express 框架构建了一个简单的 RESTful API,包括以下几个部分:

  • 中间件:使用了 bodyParser 中间件解析请求体的 JSON 格式。
  • 资源:定义了一个 users 数组作为用户资源。
  • 路由:使用了 GET、POST、PUT、DELETE 方法对用户资源进行操作。
  • 错误处理:使用了 Express 的错误处理中间件,捕获并处理错误。
  • 启动应用:启动了一个监听 3000 端口的 HTTP 服务器。

通过这个示例代码,我们可以深入理解 RESTful API 的设计原则、HTTP 方法、状态码和资源等概念,进一步掌握 RESTful API 技术的应用和实现。

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