- 身份验证
- 系统设置
- 用户
- 话题
- 提问
- 回答
- 文章
- 评论
- 举报
- 通知
- 图形验证码
- 邮件
- 图片
- 数据统计
MDClub 是一个 Material Design 风格的社区应用。
接口文档说明
GET
、PUT
、DELETE
请求均符合幂等性。
注意:请不要在官方的体验社区进行 API 测试,否则将直接封号。
REST API 可以让你用任何支持 HTTP 请求的设备来与 MDClub 的服务端进行交互,你可以使用 REST API 做很多事情,例如:
Base URL 为你的 MDClub 项目的首页网址。
例如你的 MDClub 项目的首页为 https://mdclub.org
,你需要调用文档中的 /api/questions
接口时,需要在前面加上你的首页网址,即你调用的 URL 应该为 https://mdclub.org/api/question
。
对于 POST、PUT 和 PATCH 请求,请求体的格式为 JSON 格式,而且 HTTP header 的 Content-Type 需要设置为 application/json
。
对于包含文件上传的请求,请求体格式为 form-data,而且 HTTP header 的 Content-Type 需要设置为 multipart/form-data
。
响应格式统一为 JSON 格式。
请求成功时,响应中的 code
为 0,响应格式为:
{
"code": 0,
"data": {}
}
若响应为列表数据,可能还会包含分页信息,格式如下:
{
"code": 0,
"data": [],
"pagination": {
"page": 1,
"per_page": 15,
"previous": null,
"next": 2,
"total": 124,
"pages": 9
}
}
若请求失败,则响应中的 code
大于 0,具体错误代码表示的含义参见下面的 错误代码,此时响应格式为:
{
"code": 100000,
"message": "错误描述",
"extra_message": "额外的错误描述(该字段不一定存在)",
"captcha_token": "验证码的 token(该字段不一定存在,若存在该字段,则下次调用该接口时需要用户输入验证码)",
"captcha_image": "验证码的 base64 格式的图片(该字段不一定存在,若存在该字段,则下次调用该接口时需要用户输入验证码)",
"errors": {
"additionalProp1": "提交含多个字段的表单时,验证失败会存在 errors 字段,键名为错误字段名,键值为错误描述",
"additionalProp2": "同上"
}
}
用户登录时需要调用 POST /api/tokens
接口,该接口的响应中会包含 token
字段。
保持用户登录状态有以下两种方式:
token
参数,参数的值即为调用 /api/tokens
接口时返回的 token
字段。 token
参数,参数的值即为调用 /api/tokens
接口时返回的 token
字段。 以上两种方式都能实现保持用户登录状态,若在 HTTP header 中和 Cookie 中都添加了 token
参数,则将以 HTTP header 中的为准。
token
是具有有效期的,用户在有效期内调用任意接口时,将自动续期,确保用户不需要频繁进行登录;若用户长时间未调用接口,则 token
可能会过期,即调用接口时返回“用户未登录”时,需要重新进行登录。
MDClub 的 Restful API 使用了 GET
、POST
、PUT
、PATCH
、DELETE
请求方式,然而部分老旧的浏览器、或者部分小程序平台不支持其中部分请求方式。MDClub 支持通过 X-HTTP-Method-Override
重写请求方式。
如果你需要在不支持 PUT
、PATCH
、DELETE
请求的平台中调用 MDClub 的 API,你需要在请求头中添加 X-HTTP-Method-Override
属性来重写请求方式。对于 PUT
和 PATCH
请求,属性值设置为 POST
,对于 DELETE
请求,属性值设置为 GET
,对于 GET
和 POST
请求,则无需添加该属性。
错误代码 | 错误说明 |
---|---|
100000 | 服务器错误 |
100001 | 系统维护中 |
100002 | IP 请求超过上限 |
100003 | 用户请求超过上限 |
100004 | 接口不存在 |
100005 | 该接口不支持此 HTTP METHOD |
100006 | 请求参数的 json 格式错误 |
100007 | 系统安装失败 |
200001 | 字段验证失败 |
200002 | 邮件发送失败 |
200003 | 邮件验证码已失效 |
200004 | 图片上传失败 |
200005 | 指定图片不存在 |
200006 | 投票类型只能是 up、down 中的一个 |
201001 | 用户未登录 |
201002 | 需要管理员权限 |
201003 | 指定用户不存在 |
201004 | 目标用户不存在 |
201005 | 该用户已被禁用 |
201006 | 账号或密码错误 |
201007 | 头像上传失败 |
201008 | 封面上传失败 |
201009 | 不能关注你自己 |
202001 | 指定提问不存在 |
202002 | 提问发表后即无法编辑 |
202003 | 仅提问作者可以编辑提问 |
202004 | 已超过可编辑的时间 |
202005 | 该提问下已有回答,不允许编辑 |
202006 | 该提问下已有评论,不允许编辑 |
202007 | 提问发表后即无法删除 |
202008 | 仅提问作者可以删除提问 |
202009 | 已超过可删除的时间 |
202010 | 该提问下已有回答,不允许删除 |
202011 | 该提问下已有评论,不允许删除 |
203001 | 指定回答不存在 |
203002 | 回答发表后即无法编辑 |
203003 | 仅回答的作者可以编辑回答 |
203004 | 已超过可编辑的时间 |
203005 | 该回答下已有评论,不允许编辑 |
203006 | 回答发表后即无法删除 |
203007 | 仅回答的作者可以删除回答 |
203008 | 已超过可删除的时间 |
203009 | 该回答下已有评论,不允许删除 |
204001 | 指定的评论不存在 |
204002 | 评论发表后即无法编辑 |
204003 | 仅评论的作者可以编辑评论 |
204004 | 已超过可编辑时间 |
204005 | 评论发表后即无法删除 |
204006 | 仅评论的作者可以删除评论 |
204007 | 已超过可删除时间 |
205001 | 指定话题不存在 |
205002 | 话题封面上传失败 |
206001 | 指定文章不存在 |
206002 | 文章发表后即无法编辑 |
206003 | 仅文章作者可以编辑文章 |
206004 | 已超过可编辑时间 |
206005 | 该文章下已有评论,不允许编辑 |
206006 | 文章发表后即无法删除 |
206007 | 仅文章作者可以删除文章 |
206008 | 已超过可删除时间 |
206009 | 该文章下已有评论,不允许删除 |
207001 | 指定举报不存在 |
207002 | 举报目标不存在 |
207003 | 不能重复举报 |
208001 | 指定通知不存在 |
URL | HTTP | 描述 |
---|---|---|
/api/tokens | POST | 生成 Token |
URL | HTTP | 描述 |
---|---|---|
/api/options | GET | 获取站点全局设置参数 |
/api/options | PATCH | 🔐更新站点全局设置 |
URL | HTTP | 描述 |
---|---|---|
/api/user/answers | GET | 🔑获取当前登录用户发表的回答 |
/api/user/articles | GET | 🔑获取当前登录用户发表的文章 |
/api/user/avatar | POST | 🔑上传当前登录用户的头像 |
/api/user/avatar | DELETE | 🔑删除当前登录用户的头像,并重置为默认头像 |
/api/user/comments | GET | 🔑获取当前登录用户发表的评论 |
/api/user/cover | POST | 🔑上传当前登录用户的封面 |
/api/user/cover | DELETE | 🔑删除当前登录用户的封面,并重置为默认封面 |
/api/user/followees | GET | 🔑获取当前登录用户关注的用户 |
/api/user/followers | GET | 🔑获取当前登录用户的关注者 |
/api/user/following_articles | GET | 🔑获取登录用户关注的文章 |
/api/user/following_questions | GET | 🔑获取登录用户关注的提问 |
/api/user/following_topics | GET | 🔑获取登录用户关注的话题 |
/api/user/password/email | POST | 发送重置密码邮箱验证码 |
/api/user/password | PUT | 验证邮箱并更新密码 |
/api/user/questions | GET | 🔑获取登录用户发表的提问 |
/api/user/register/email | POST | 发送注册邮箱验证码 |
/api/user | GET | 🔑获取当前登录用户的信息 |
/api/user | PATCH | 🔑更新当前登录用户信息 |
/api/users | GET | 获取用户列表 |
/api/users | POST | 验证邮箱并创建账号 |
/api/users/{user_ids}/disable | POST | 🔐批量禁用用户 |
/api/users/{user_ids}/enable | POST | 🔐批量恢复用户 |
/api/users/{user_id}/answers | GET | 获取指定用户发表的回答 |
/api/users/{user_id}/articles | GET | 获取指定用户发表的文章 |
/api/users/{user_id}/avatar | DELETE | 🔐删除指定用户的头像,并重置为默认头像 |
/api/users/{user_id}/comments | GET | 获取指定用户发表的评论 |
/api/users/{user_id}/cover | DELETE | 🔐删除指定用户的封面,并重置为默认封面 |
/api/users/{user_id}/disable | POST | 🔐禁用指定用户 |
/api/users/{user_id}/enable | POST | 🔐恢复指定用户 |
/api/users/{user_id}/followees | GET | 获取指定用户关注的用户列表 |
/api/users/{user_id}/followers | GET | 获取指定用户的关注者 |
/api/users/{user_id}/followers | POST | 🔑添加关注 |
/api/users/{user_id}/followers | DELETE | 🔑取消关注 |
/api/users/{user_id}/following_articles | GET | 获取指定用户关注的文章列表 |
/api/users/{user_id}/following_questions | GET | 获取指定用户关注的提问列表 |
/api/users/{user_id}/following_topics | GET | 获取指定用户关注的话题列表 |
/api/users/{user_id}/questions | GET | 获取指定用户发表的提问 |
/api/users/{user_id} | GET | 获取指定用户信息 |
/api/users/{user_id} | PATCH | 🔐更新指定用户信息 |
URL | HTTP | 描述 |
---|---|---|
/api/topics | GET | 获取全部话题 |
/api/topics | POST | 🔐发布话题 |
/api/topics/{topic_ids}/trash | POST | 🔐批量把话题放入回收站 |
/api/topics/{topic_ids}/untrash | POST | 🔐批量把话题移出回收站 |
/api/topics/{topic_ids} | DELETE | 🔐批量删除话题 |
/api/topics/{topic_id}/articles | GET | 获取指定话题下的文章 |
/api/topics/{topic_id}/followers | GET | 获取指定话题的关注者 |
/api/topics/{topic_id}/followers | POST | 🔑关注指定话题 |
/api/topics/{topic_id}/followers | DELETE | 🔑取消关注指定话题 |
/api/topics/{topic_id}/questions | GET | 获取指定话题下的提问 |
/api/topics/{topic_id}/trash | POST | 🔐把话题放入回收站 |
/api/topics/{topic_id}/untrash | POST | 🔐把话题移出回收站 |
/api/topics/{topic_id} | GET | 获取指定话题信息 |
/api/topics/{topic_id} | POST | 🔐更新话题信息 |
/api/topics/{topic_id} | DELETE | 🔐删除话题 |
URL | HTTP | 描述 |
---|---|---|
/api/questions | GET | 获取提问列表 |
/api/questions | POST | 🔑发表提问 |
/api/questions/{question_ids}/trash | POST | 🔐批量把提问放入回收站 |
/api/questions/{question_ids}/untrash | POST | 🔐批量把提问移出回收站 |
/api/questions/{question_ids} | DELETE | 🔐批量删除提问 |
/api/questions/{question_id}/answers | GET | 获取指定提问下的回答 |
/api/questions/{question_id}/answers | POST | 🔑在指定提问下发表回答 |
/api/questions/{question_id}/comments | GET | 获取指定提问的评论 |
/api/questions/{question_id}/comments | POST | 🔑在指定提问下发表评论 |
/api/questions/{question_id}/followers | GET | 获取指定提问的关注者 |
/api/questions/{question_id}/followers | POST | 🔑添加关注 |
/api/questions/{question_id}/followers | DELETE | 🔑取消关注 |
/api/questions/{question_id}/trash | POST | 🔐把提问放入回收站 |
/api/questions/{question_id}/untrash | POST | 🔐把提问移出回收站 |
/api/questions/{question_id}/voters | GET | 获取提问的投票者 |
/api/questions/{question_id}/voters | POST | 🔑为提问投票 |
/api/questions/{question_id}/voters | DELETE | 🔑取消为提问的投票 |
/api/questions/{question_id} | GET | 获取指定提问信息 |
/api/questions/{question_id} | PATCH | 🔑更新提问信息 |
/api/questions/{question_id} | DELETE | 🔑删除提问 |
URL | HTTP | 描述 |
---|---|---|
/api/answers | GET | 🔐获取回答列表 |
/api/answers/{answer_ids}/trash | POST | 🔐批量把回答放入回收站 |
/api/answers/{answer_ids}/untrash | POST | 🔐批量把回答移出回收站 |
/api/answers/{answer_ids} | DELETE | 🔐批量删除回答 |
/api/answers/{answer_id}/comments | GET | 获取指定回答的评论 |
/api/answers/{answer_id}/comments | POST | 在指定回答下发表评论 |
/api/answers/{answer_id}/trash | POST | 🔐把回答放入回收站 |
/api/answers/{answer_id}/untrash | POST | 🔐把回答移出回收站 |
/api/answers/{answer_id}/voters | GET | 获取回答的投票者 |
/api/answers/{answer_id}/voters | POST | 🔑为回答投票 |
/api/answers/{answer_id}/voters | DELETE | 🔑取消为回答的投票 |
/api/answers/{answer_id} | GET | 获取回答详情 |
/api/answers/{answer_id} | PATCH | 🔑修改回答信息 |
/api/answers/{answer_id} | DELETE | 🔑删除回答 |
URL | HTTP | 描述 |
---|---|---|
/api/articles | GET | 获取文章列表 |
/api/articles | POST | 🔑发表文章 |
/api/articles/{article_ids}/trash | POST | 🔐批量把文章放入回收站 |
/api/articles/{article_ids}/untrash | POST | 🔐批量把文章移出回收站 |
/api/articles/{article_ids} | DELETE | 🔐批量删除文章 |
/api/articles/{article_id}/comments | GET | 获取指定文章的评论列表 |
/api/articles/{article_id}/comments | POST | 🔑在指定文章下发表评论 |
/api/articles/{article_id}/followers | GET | 获取指定文章的关注者 |
/api/articles/{article_id}/followers | POST | 🔑添加关注 |
/api/articles/{article_id}/followers | DELETE | 🔑取消关注 |
/api/articles/{article_id}/trash | POST | 🔐把文章放入回收站 |
/api/articles/{article_id}/untrash | POST | 🔐把文章移出回收站 |
/api/articles/{article_id}/voters | GET | 获取文章的投票者 |
/api/articles/{article_id}/voters | POST | 🔑为文章投票 |
/api/articles/{article_id}/voters | DELETE | 🔑取消为文章的投票 |
/api/articles/{article_id} | GET | 获取指定文章信息 |
/api/articles/{article_id} | PATCH | 🔑更新文章信息 |
/api/articles/{article_id} | DELETE | 🔑删除文章 |
URL | HTTP | 描述 |
---|---|---|
/api/comments | GET | 🔐获取所有评论 |
/api/comments/{comment_ids}/trash | POST | 🔐批量把评论放入回收站 |
/api/comments/{comment_ids}/untrash | POST | 🔐批量把评论移出回收站 |
/api/comments/{comment_ids} | DELETE | 🔐批量删除评论 |
/api/comments/{comment_id}/replies | GET | 获取指定评论的回复 |
/api/comments/{comment_id}/replies | POST | 🔑在指定评论下发表回复 |
/api/comments/{comment_id}/trash | POST | 🔐把评论放入回收站 |
/api/comments/{comment_id}/untrash | POST | 🔐把评论移出回收站 |
/api/comments/{comment_id}/voters | GET | 获取评论的投票者 |
/api/comments/{comment_id}/voters | POST | 🔑为评论投票 |
/api/comments/{comment_id}/voters | DELETE | 🔑取消为评论的投票 |
/api/comments/{comment_id} | GET | 获取评论详情 |
/api/comments/{comment_id} | PATCH | 🔑修改评论 |
/api/comments/{comment_id} | DELETE | 🔑删除评论 |
URL | HTTP | 描述 |
---|---|---|
/api/reports | GET | 🔐获取被举报的内容列表 |
/api/reports/{report_targets} | DELETE | 🔐批量删除举报 |
/api/reports/{reportable_type}:{reportable_id} | GET | 🔐获取被举报内容的举报详情 |
/api/reports/{reportable_type}:{reportable_id} | POST | 🔑添加举报 |
/api/reports/{reportable_type}:{reportable_id} | DELETE | 🔐删除举报 |
URL | HTTP | 描述 |
---|
URL | HTTP | 描述 |
---|---|---|
/api/notifications/count | GET | 🔑获取未读通知数量 |
/api/notifications/read | POST | 🔑把所有通知标记为已读 |
/api/notifications | GET | 🔑获取通知列表 |
/api/notifications | DELETE | 🔑删除所有通知 |
/api/notifications/{notification_ids}/read | POST | 🔑批量把通知标记为已读 |
/api/notifications/{notification_ids} | DELETE | 🔑批量删除通知 |
/api/notifications/{notification_id}/read | POST | 🔑把一条通知标记为已读 |
/api/notifications/{notification_id} | DELETE | 🔑删除一条通知 |
URL | HTTP | 描述 |
---|---|---|
/api/captchas | POST | 生成新的图形验证码 |
URL | HTTP | 描述 |
---|---|---|
/api/emails | POST | 🔐发送邮件 |
URL | HTTP | 描述 |
---|---|---|
/api/images | GET | 🔐获取图片列表 |
/api/images | POST | 🔑上传图片 |
/api/images/{keys} | DELETE | 🔐批量删除图片 |
/api/images/{key} | GET | 获取指定图片信息 |
/api/images/{key} | PATCH | 🔐更新指定图片信息 |
/api/images/{key} | DELETE | 🔐删除指定图片 |
URL | HTTP | 描述 |
---|---|---|
/api/stats | GET | 🔐获取站点统计数据 |