Forem API V1 文章接口详解与使用指南
2025-07-05 06:24:49作者:董灵辛Dennis
Forem 是一个开源社区平台,其 API 提供了丰富的功能来管理平台内容。本文将深入解析 Forem API V1 中与文章相关的接口,帮助开发者更好地理解和使用这些接口。
文章接口概述
Forem API V1 提供了完整的文章管理功能,主要包括:
- 创建新文章
- 获取文章列表
- 按发布时间排序获取最新文章
这些接口允许开发者以编程方式与 Forem 平台交互,实现自动化内容管理和集成。
创建文章接口
接口说明
POST /api/articles
接口用于在 Forem 平台上发布新文章。文章可以是博客帖子、讨论问题、帮助线程等各种形式的内容。
请求参数
请求体需要包含一个 JSON 对象,遵循 Article 模式定义。主要字段包括:
title
: 文章标题(必填)body_markdown
: 文章内容(Markdown 格式)published
: 是否立即发布(布尔值)tags
: 文章标签数组
响应示例
成功创建文章后,API 会返回 201 状态码和包含文章详细信息的 JSON 响应:
{
"type_of": "article",
"id": 2,
"title": "New article",
"description": "New post example",
"readable_publish_date": "Dec 15",
"slug": "new-article-2io1",
"path": "/username2/new-article-2io1",
"url": "http://forem.test/username2/new-article-2io1",
"comments_count": 0,
"public_reactions_count": 0,
"collection_id": 1,
"published_timestamp": "2023-12-15T00:15:27Z",
"positive_reactions_count": 0,
"cover_image": "https://thepracticaldev.s3.amazonaws.com/i/5wfo25724gzgk5e5j50g.jpg",
"body_html": "<p><strong>New</strong> body for the article</p>",
"body_markdown": "**New** body for the article",
"user": {
"name": "Carmen \"Andre\" \\:/ Rodriguez",
"username": "username2"
}
}
错误处理
- 401 Unauthorized: API 密钥无效或缺失
- 422 Unprocessable Entity: 请求参数缺失或无效
获取文章列表接口
接口说明
GET /api/articles
接口用于获取文章列表,默认返回按受欢迎程度降序排列的特色已发布文章。
查询参数
该接口支持多种过滤和排序选项:
-
分页参数:
page
: 页码per_page
: 每页文章数(30-1000)
-
标签过滤:
tag
: 按单个标签过滤tags
: 按多个标签过滤(逗号分隔)tags_exclude
: 排除指定标签的文章
-
用户/组织过滤:
username
: 按用户名过滤
-
文章状态:
state
: 可取值 fresh(新鲜文章)、rising(上升趋势文章)、all(所有文章)
-
时间范围:
top
: 获取最近 N 天内最受欢迎的文章
-
集合:
collection_id
: 按集合 ID 过滤
响应示例
[
{
"type_of": "article",
"id": 5,
"title": "Let Us Now Praise Famous Men4",
"description": "Street yr raw denim master...",
"tags": "discuss",
"user": {
"name": "Lanette \"Marine\" \\:/ Stanton",
"username": "username6"
},
"organization": {
"name": "Spinka and Sons",
"username": "org4"
}
}
]
获取最新文章接口
接口说明
GET /api/articles/latest
接口专门用于获取按发布时间降序排列的文章列表,适合需要展示最新内容的场景。
查询参数
page
: 页码per_page
: 每页文章数(30-1000)
特点
与通用文章列表接口相比,此接口:
- 只按发布时间排序
- 不支持复杂的过滤条件
- 响应速度通常更快
最佳实践
- 认证:大多数接口需要
api-key
请求头进行认证 - 分页:处理大量数据时务必实现分页逻辑
- 错误处理:妥善处理 401 和 422 错误
- 日期格式:所有日期时间字段使用 RFC 3339 格式
- 缓存:对频繁访问的数据考虑实现缓存机制
常见问题
Q: 如何获取特定用户的全部文章?
A: 使用 username
参数并结合 state=all
参数。
Q: 如何获取特定标签的热门文章?
A: 使用 tag
参数结合 top
参数指定时间范围。
Q: 创建文章时如何设置封面图片?
A: 在创建请求中包含 cover_image
字段,值为图片 URL。
通过合理利用这些 API 接口,开发者可以构建强大的 Forem 平台集成应用,实现自动化内容管理和展示。