203 lines
4.3 KiB
Plaintext
203 lines
4.3 KiB
Plaintext
社区交流模块接口文档
|
||
================
|
||
|
||
基础信息
|
||
-------
|
||
- 基础路径: /api/v1/community
|
||
- 请求方式: REST
|
||
- 数据格式: JSON
|
||
- 认证方式: Bearer Token
|
||
|
||
数据结构
|
||
-------
|
||
|
||
Post 帖子对象:
|
||
{
|
||
id: number, // 帖子ID
|
||
title: string, // 标题
|
||
content: string, // 内容
|
||
createTime: string, // 发布时间
|
||
author: { // 作者信息
|
||
id: number,
|
||
name: string,
|
||
avatar: string
|
||
},
|
||
images?: string[], // 图片列表
|
||
tags: string[], // 标签
|
||
likes: number, // 点赞数
|
||
comments: number, // 评论数
|
||
isLiked: boolean, // 是否已点赞
|
||
isFollowing: boolean // 是否已关注作者
|
||
}
|
||
|
||
Topic 话题对象:
|
||
{
|
||
id: number, // 话题ID
|
||
rank: number, // 排名
|
||
title: string, // 标题
|
||
hot: string // 热度
|
||
}
|
||
|
||
Comment 评论对象:
|
||
{
|
||
id: number, // 评论ID
|
||
postId: number, // 帖子ID
|
||
userId: number, // 用户ID
|
||
userName: string, // 用户名
|
||
content: string, // 评论内容
|
||
time: string, // 评论时间
|
||
likes: number, // 点赞数
|
||
replies?: Comment[] // 回复列表
|
||
}
|
||
|
||
API 接口
|
||
-------
|
||
|
||
1. 获取帖子列表
|
||
GET /api/v1/community/posts
|
||
|
||
请求参数:
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| category | string | 否 | 分类 |
|
||
| page | number | 否 | 页码,默认1 |
|
||
| size | number | 否 | 每页数量,默认10 |
|
||
| keyword | string | 否 | 搜索关键词 |
|
||
|
||
响应示例:
|
||
{
|
||
"code": 200,
|
||
"message": "success",
|
||
"data": {
|
||
"total": 100,
|
||
"records": [
|
||
{
|
||
"id": 1,
|
||
"title": "今天参加了太极拳课程",
|
||
"content": "今天和社区的老朋友们一起学习太极拳,感觉特别好!",
|
||
"createTime": "2024-03-20 10:30",
|
||
"author": {
|
||
"id": 1,
|
||
"name": "张大爷",
|
||
"avatar": "https://example.com/avatar1.jpg"
|
||
},
|
||
"images": [
|
||
"https://example.com/taichi1.jpg",
|
||
"https://example.com/taichi2.jpg"
|
||
],
|
||
"tags": ["太极拳", "健康运动", "社区活动"],
|
||
"likes": 28,
|
||
"comments": 12,
|
||
"isLiked": false,
|
||
"isFollowing": false
|
||
}
|
||
]
|
||
}
|
||
}
|
||
|
||
2. 发布帖子
|
||
POST /api/v1/community/posts
|
||
|
||
请求参数:
|
||
{
|
||
"title": "分享一个养生小妙方",
|
||
"content": "每天坚持喝一杯蜂蜜水,对身体很有好处...",
|
||
"tags": ["养生", "健康", "生活分享"],
|
||
"images": ["base64图片数据"]
|
||
}
|
||
|
||
3. 获取热门话题
|
||
GET /api/v1/community/topics/hot
|
||
|
||
响应示例:
|
||
{
|
||
"code": 200,
|
||
"message": "success",
|
||
"data": [
|
||
{
|
||
"id": 1,
|
||
"rank": 1,
|
||
"title": "健康养生",
|
||
"hot": "999+"
|
||
}
|
||
]
|
||
}
|
||
|
||
4. 获取活跃用户
|
||
GET /api/v1/community/users/active
|
||
|
||
响应示例:
|
||
{
|
||
"code": 200,
|
||
"message": "success",
|
||
"data": [
|
||
{
|
||
"id": 1,
|
||
"name": "李奶奶",
|
||
"avatar": "https://example.com/avatar2.jpg",
|
||
"signature": "快乐生活每一天",
|
||
"isFollowing": true
|
||
}
|
||
]
|
||
}
|
||
|
||
5. 关注/取消关注用户
|
||
POST /api/v1/community/users/{id}/follow
|
||
|
||
6. 点赞/取消点赞帖子
|
||
POST /api/v1/community/posts/{id}/like
|
||
|
||
7. 获取评论列表
|
||
GET /api/v1/community/posts/{id}/comments
|
||
|
||
8. 添加评论
|
||
POST /api/v1/community/posts/{id}/comments
|
||
|
||
请求参数:
|
||
{
|
||
"content": "评论内容",
|
||
"parentId": null // 回复其他评论时设置
|
||
}
|
||
|
||
9. 上传图片
|
||
POST /api/v1/community/upload
|
||
Content-Type: multipart/form-data
|
||
|
||
10. 获取推荐帖子
|
||
GET /api/v1/community/posts/recommended
|
||
|
||
错误码说明
|
||
--------
|
||
| 错误码 | 说明 |
|
||
| 200 | 成功 |
|
||
| 400 | 请求参数错误 |
|
||
| 401 | 未授权 |
|
||
| 403 | 禁止访问 |
|
||
| 404 | 资源不存在 |
|
||
| 500 | 服务器内部错误 |
|
||
|
||
注意事项
|
||
-------
|
||
1. 图片上传要求:
|
||
- 支持格式:jpg、png、gif
|
||
- 单张大小限制:5MB
|
||
- 每篇帖子最多9张图片
|
||
|
||
2. 评论规则:
|
||
- 支持多级回复
|
||
- 单条评论字数限制:200字
|
||
- 评论需遵守社区规范
|
||
|
||
3. 内容审核:
|
||
- 帖子和评论发布前需经过敏感词过滤
|
||
- 图片需进行内容安全检测
|
||
- 违规内容将被自动屏蔽
|
||
|
||
4. 缓存策略:
|
||
- 帖子列表缓存:5分钟
|
||
- 热门话题缓存:1小时
|
||
- 活跃用户缓存:30分钟
|
||
|
||
5. 访问频率限制:
|
||
- 发帖:10次/小时
|
||
- 评论:20次/小时
|
||
- 点赞:100次/小时 |