本文档概述了 RealWorld 应用程序的全面 API 规范。它详细介绍了符合标准化“Conduit”API 规范的 RESTful API 端点、身份验证机制、请求/响应格式和可用资源。本规范作为所有后端实现的契约,以及消耗 API 的前端应用程序的参考。
有关 API 测试的信息,请参阅 API 测试。有关支持此 API 的数据库架构的详细信息,请参阅 数据库架构。
RealWorld API 遵循 RESTful 原则,并以 OpenAPI 3.0 格式定义。该 API 提供了用于在社交博客平台中管理用户、文章、评论、个人资料和标签的端点。
来源: api/openapi.yml1-12 api/README.md1-11
API 使用 JWT(JSON Web Token)进行身份验证。所有受保护的端点都需要 Authorization 头中的令牌。
令牌必须包含在 Authorization 头中,格式如下:
Authorization: Token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
API 提供了以下资源的端点:
| 端点 | 方法 | 描述 | 需要认证 |
|---|---|---|---|
/users/login | POST | 登录现有用户 | 否 |
/users | POST | 注册新用户 | 否 |
/user | GET | 获取当前用户 | 是 |
/user | PUT | 更新当前用户 | 是 |
| 端点 | 方法 | 描述 | 需要认证 |
|---|---|---|---|
/profiles/{username} | GET | 获取用户个人资料 | 可选 |
/profiles/{username}/follow | POST | 关注用户 | 是 |
/profiles/{username}/follow | DELETE | 取消关注用户 | 是 |
| 端点 | 方法 | 描述 | 需要认证 |
|---|---|---|---|
/articles/feed | GET | 获取关注用户的文章 | 是 |
/articles | GET | 获取全局最新文章 | 可选 |
/articles | POST | 创建文章 | 是 |
/articles/{slug} | GET | 获取一篇文章 | 否 |
/articles/{slug} | PUT | 更新一篇文章 | 是 |
/articles/{slug} | DELETE | 删除一篇文章 | 是 |
| 端点 | 方法 | 描述 | 需要认证 |
|---|---|---|---|
/articles/{slug}/comments | GET | 获取文章评论 | 可选 |
/articles/{slug}/comments | POST | 创建评论 | 是 |
/articles/{slug}/comments/{id} | DELETE | 删除评论 | 是 |
| 端点 | 方法 | 描述 | 需要认证 |
|---|---|---|---|
/articles/{slug}/favorite | POST | 收藏一篇文章 | 是 |
/articles/{slug}/favorite | DELETE | 取消收藏一篇文章 | 是 |
| 端点 | 方法 | 描述 | 需要认证 |
|---|---|---|---|
/tags | GET | 获取所有标签 | 否 |
下图说明了 API 中关键实体之间的关系
来源: apps/api/prisma/migrations/20241009081140_init/migration.sql1-96 api/openapi.yml423-592
/users/login/users来源: api/openapi.yml22-52 apps/documentation/src/content/docs/specifications/backend/api-response-format.md9-21
/user/user来源: api/openapi.yml53-86 apps/documentation/src/content/docs/specifications/backend/api-response-format.md9-21
/profiles/{username}username - 要获取其个人资料的用户名来源: api/openapi.yml87-107 apps/documentation/src/content/docs/specifications/backend/api-response-format.md23-34
/articlestag - 按标签过滤author - 按作者(用户名)过滤favorited - 按用户收藏的文章(用户名)过滤limit - 返回的文章数量限制(默认为 20)offset - 跳过的文章数量(默认为 0)注意:截至 2024 年 8 月 16 日,出于性能原因,文章列表端点不再返回 body 字段。
来源: api/openapi.yml174-205 apps/documentation/src/content/docs/specifications/backend/api-response-format.md60-103
/articles/{slug}/commentsslug - 要获取评论的文章的 slug来源: api/openapi.yml290-310 apps/documentation/src/content/docs/specifications/backend/api-response-format.md125-142
/tags来源: api/openapi.yml410-421 apps/documentation/src/content/docs/specifications/backend/api-response-format.md144-152
API 使用传统的 HTTP 响应代码来指示 API 请求的成功或失败
对于错误,API 会返回一致的错误响应格式
来源: api/openapi.yml589-602 api/openapi.yml729-734
API 托管在以下基础 URL
https://api.realworld.io/api
有关测试 API 实现的信息,请参阅 API 测试。
当前 API 版本为 1.0.0。API 不在 URL 中使用显式版本控制,但所有 API 更改都已在 OpenAPI 规范中记录和维护。
API 架构包含以下主要数据模型
这些模型及其关系在 OpenAPI 规范中定义,并在数据库架构中实现。
来源: api/openapi.yml423-588 apps/api/prisma/migrations/20241009081140_init/migration.sql1-96