Skip to content

🔗 接口规范

RESTful API 接口规范

RESTful API 接口规范是一系列设计准则,旨在帮助开发者构建一致性高、易于理解和维护的Web服务。遵循这些规范,可以确保API具有良好的可用性、可扩展性和易用性。以下是一些常见的RESTful API接口规范:

1. 资源命名规范(URL设计)

  • 资源名使用名词:资源应该用名词表示,避免使用动词。例如:/users表示用户资源,/orders表示订单资源,而不是/getUsers
  • 复数形式:资源名称通常采用复数形式,以便表示一组资源。例如:/users而非/user
  • 层次化的URL:资源可以通过层次化的路径进行嵌套。例如,获取某个用户的订单可以使用/users/{id}/orders
  • 避免冗余路径:不应在路径中使用动词或冗余元素。例如,不应有/getUsers/createUser,而是使用GET /usersPOST /users

示例

  • 获取所有用户:GET /users
  • 获取特定用户:GET /users/{id}
  • 创建用户:POST /users
  • 更新用户信息:PUT /users/{id}
  • 删除用户:DELETE /users/{id}

2. HTTP方法规范

  • GET:用于读取资源,查询数据,不应产生副作用。
  • POST:用于创建资源或触发操作,可能会导致数据变化。
  • PUT:用于更新资源的整个表示,通常替换现有资源。
  • PATCH:用于部分更新资源,通常只修改资源的一部分属性。
  • DELETE:用于删除指定的资源。

注意

  • GET请求是幂等的:多次相同的请求应返回相同的结果。
  • POST请求可能不是幂等的:多次请求可能导致多次创建。
  • PUTDELETE请求应是幂等的:多次相同的请求应该返回相同的结果。

3. HTTP状态码规范

使用HTTP状态码来表示请求的结果。常见的状态码包括:

  • 2xx(成功)
    • 200 OK:请求成功,返回所需的资源。
    • 201 Created:资源已成功创建。
    • 204 No Content:请求成功,但没有返回内容。
  • 3xx(重定向)
    • 301 Moved Permanently:资源已永久移动到新位置。
  • 4xx(客户端错误)
    • 400 Bad Request:请求格式错误或缺少必要的参数。
    • 401 Unauthorized:需要身份验证。
    • 403 Forbidden:服务器理解请求,但拒绝执行。
    • 404 Not Found:请求的资源不存在。
  • 5xx(服务器错误)
    • 500 Internal Server Error:服务器内部错误。
    • 503 Service Unavailable:服务器不可用,通常是服务器过载或正在维护。

4. 请求和响应格式

  • 统一的请求格式:请求的内容应以JSON格式为主,避免使用XML等其他格式,除非有特殊需求。
  • Content-Type:对于请求体,应设置适当的Content-Type头,例如application/json表示请求体为JSON格式。
  • 响应格式:返回的数据通常使用JSON格式,确保客户端能够方便地解析。

示例

  • 请求头:
    http
    Content-Type: application/json
  • 请求体:
    json
    {
      "name": "John Doe",
      "email": "johndoe@example.com"
    }
  • 响应体:
    json
    {
      "id": 1,
      "name": "John Doe",
      "email": "johndoe@example.com"
    }

5. 过滤、排序和分页

  • 过滤:允许用户通过查询参数过滤结果。例如,获取某个年龄段的用户:GET /users?age=25.
  • 排序:允许用户根据指定字段进行排序。例如:GET /users?sort=name
  • 分页:当返回的数据量较大时,使用分页来限制每次返回的记录数。例如:GET /users?page=1&limit=20

6. 错误处理

  • 通过返回详细的错误消息来帮助开发者调试。错误消息应包含:
    • 错误的状态码(例如:404 Not Found、400 Bad Request)。
    • 错误的描述,指出问题的具体原因。
  • 示例
    json
    {
      "error": {
        "code": 400,
        "message": "Invalid user ID",
        "details": "The provided user ID is not in the correct format."
      }
    }

7. 身份验证和授权

  • 常见的身份验证方式包括:
    • API Key:在请求头中传递API密钥。
    • Bearer Token(OAuth 2.0):使用Bearer token在请求头中进行身份验证。
    • Basic Auth:在请求头中传递用户名和密码的Base64编码。

示例

http
Authorization: Bearer {token}

8. 超媒体链接(HATEOAS)

  • 提供资源之间的链接,使得客户端能够通过API响应中的链接导航到其他资源。每个API响应应包含当前资源的所有相关操作的链接。

示例

json
{
  "id": 1,
  "name": "John Doe",
  "_links": {
    "self": "/users/1",
    "update": "/users/1/update",
    "delete": "/users/1/delete"
  }
}

总结

遵循RESTful API的设计规范可以确保API的简洁性、可维护性以及易于扩展。设计良好的API不仅能提高开发效率,还能为用户提供一致的体验。