- RESTful 风格,使用路径参数和查询参数
- 资源使用复数形式,如
/conversations、/posts - 示例:
/user/{userId}/info、/conversations/{id}/messages
- 请求体和响应体使用小驼峰命名(camelCase)
- 数据库字段使用下划线命名(snake_case)
- 路径参数和查询参数使用小驼峰命名
所有接口统一使用以下响应格式:
{
"code": 200,
"message": "success",
"data": {}
}- 需要认证的接口在请求头中携带:
Authorization: Bearer <token> - Token 通过登录接口获取
- 未认证的请求将返回 401 错误
page: 页码,从 1 开始,默认 1size或limit: 每页数量,默认 10 或 20
- 接口:
GET /user/{user_id}/info - 描述: 根据用户 ID 获取用户详细信息
- 参数:
user_id(路径参数): 用户 ID
- 响应:
{
"code": 200,
"message": "success",
"data": {
"userId": 1,
"username": "testuser",
"email": "test@example.com",
"phone": "13800138000",
"nickname": "测试用户",
"gender": "男",
"birthday": "1990-01-01",
"region": "北京",
"avatarUrl": "https://example.com/avatar.jpg",
"bio": "个人简介",
"createdAt": "2024-01-01T00:00:00"
}
}- 接口:
PUT /user/{user_id}/info - 描述: 更新用户的基本信息
- 参数:
user_id(路径参数): 用户 ID
- 请求体:
{
"nickname": "新昵称",
"email": "new@example.com",
"phone": "13900139000",
"gender": "女",
"birthday": "1995-05-15",
"region": "上海",
"bio": "更新后的简介"
}- 接口:
POST /user/register - 描述: 新用户注册
- 请求体:
{
"username": "newuser",
"email": "new@example.com",
"phone": "13800138000",
"password": "password123",
"nickname": "新用户",
"gender": "男",
"birthday": "1990-01-01"
}- 接口:
POST /user/login - 描述: 用户登录验证,支持邮箱、手机号或用户名登录
- 请求体:
{
"loginName": "test@example.com",
"password": "password123"
}- 响应:
{
"code": 200,
"message": "success",
"data": {
"user": {
"userId": 1,
"username": "testuser",
"nickname": "测试用户",
"email": "test@example.com",
"avatarUrl": "https://example.com/avatar.jpg"
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}- 接口:
GET /user/list - 描述: 分页获取用户列表
- 认证: 需要 Bearer Token
- 参数:
page(查询参数): 页码,默认 1size(查询参数): 每页数量,默认 10
- 响应:
{
"code": 200,
"message": "success",
"data": [
{
"userId": 1,
"username": "testuser",
"nickname": "测试用户",
"email": "test@example.com"
}
]
}- 接口:
PUT /user/{userId}/password - 描述: 用户修改密码,需要提供旧密码
- 认证: 需要 Bearer Token
- 参数:
userId(路径参数): 用户 ID
- 请求体:
{
"oldPassword": "oldpassword123",
"newPassword": "newpassword123"
}- 响应:
{
"code": 200,
"message": "success",
"data": "密码修改成功"
}- 接口:
POST /user/forgot-password/send-code - 描述: 向邮箱或手机号发送重置密码验证码
- 请求体:
{
"email": "test@example.com"
}或
{
"phone": "13800138000"
}- 响应:
{
"code": 200,
"message": "success",
"data": "验证码已发送"
}- 接口:
POST /user/forgot-password/reset - 描述: 通过验证码重置密码,用于忘记密码场景
- 请求体:
{
"email": "test@example.com",
"code": "123456",
"newPassword": "newpassword123"
}- 响应:
{
"code": 200,
"message": "success",
"data": "密码重置成功"
}- 接口:
DELETE /user/{userId} - 描述: 根据用户 ID 删除用户
- 认证: 需要 Bearer Token
- 参数:
userId(路径参数): 用户 ID
- 响应:
{
"code": 200,
"message": "success",
"data": "用户删除成功"
}- 接口:
GET /user/{userId}/likes - 描述: 获取指定用户点赞的所有帖子
- 认证: 需要 Bearer Token
- 参数:
userId(路径参数): 用户 IDpage(查询参数): 页码,默认 1limit(查询参数): 每页数量,默认 100
- 响应:
{
"code": 200,
"message": "success",
"data": [
{
"likeId": 1,
"userId": 1,
"postId": 1,
"createdAt": "2024-01-01T00:00:00"
}
]
}- 接口:
GET /user/{userId}/favorites - 描述: 获取指定用户收藏的所有帖子,可指定收藏夹
- 认证: 需要 Bearer Token
- 参数:
userId(路径参数): 用户 IDfolderId(查询参数): 收藏夹 ID,可选page(查询参数): 页码,默认 1limit(查询参数): 每页数量,默认 100
- 响应:
{
"code": 200,
"message": "success",
"data": [
{
"favoriteId": 1,
"userId": 1,
"postId": 1,
"folderId": 1,
"createdAt": "2024-01-01T00:00:00"
}
]
}- 接口:
GET /user/{userId}/favorite-folders - 描述: 获取指定用户的所有收藏夹
- 认证: 需要 Bearer Token
- 参数:
userId(路径参数): 用户 ID
- 响应:
{
"code": 200,
"message": "success",
"data": [
{
"folderId": 1,
"userId": 1,
"name": "我的收藏",
"isPublic": false,
"createdAt": "2024-01-01T00:00:00"
}
]
}- 接口:
POST /user/{userId}/favorite-folders - 描述: 为用户创建新的收藏夹
- 认证: 需要 Bearer Token
- 参数:
userId(路径参数): 用户 ID
- 请求体:
{
"name": "新收藏夹"
}- 响应:
{
"code": 200,
"message": "success",
"data": {
"folderId": 1,
"userId": 1,
"name": "新收藏夹",
"isPublic": false,
"createdAt": "2024-01-01T00:00:00"
}
}- 接口:
DELETE /user/{userId}/favorite-folders/{folderId} - 描述: 删除指定的收藏夹
- 认证: 需要 Bearer Token
- 参数:
userId(路径参数): 用户 IDfolderId(路径参数): 收藏夹 ID
- 响应:
{
"code": 200,
"message": "success",
"data": "收藏夹删除成功"
}- 接口:
GET /posts - 描述: 获取帖子列表,支持分页和过滤
- 参数:
page(查询参数): 页码,默认 1limit(查询参数): 每页数量,默认 10tag(查询参数): 标签 ID,可选user_id(查询参数): 用户 ID,可选
- 响应:
{
"code": 200,
"message": "success",
"data": [
{
"postId": 1,
"userId": 1,
"content": "帖子内容",
"createdAt": "2024-01-01T00:00:00"
}
]
}- 接口:
POST /posts - 描述: 发布新帖子
- 请求体:
{
"userId": 1,
"content": "帖子内容",
"images": ["https://example.com/image1.jpg"],
"tags": [1, 2, 3]
}- 接口:
GET /posts/{post_id} - 描述: 根据帖子 ID 获取帖子详细信息
- 参数:
post_id(路径参数): 帖子 ID
- 响应:
{
"code": 200,
"message": "success",
"data": {
"postId": 1,
"userId": 1,
"content": "帖子内容",
"createdAt": "2024-01-01T00:00:00",
"images": ["https://example.com/image1.jpg"],
"tags": [1, 2, 3],
"comments": [],
"likes": 5
}
}- 接口:
PUT /posts/{post_id} - 描述: 更新帖子内容
- 参数:
post_id(路径参数): 帖子 ID
- 请求体:
{
"content": "更新后的帖子内容"
}- 接口:
DELETE /posts/{post_id} - 描述: 根据帖子 ID 删除帖子
- 参数:
post_id(路径参数): 帖子 ID
- 接口:
POST /posts/{post_id}/comments - 描述: 对帖子发表评论
- 参数:
post_id(路径参数): 帖子 ID
- 请求体:
{
"userId": 1,
"content": "评论内容",
"parentId": null
}- 接口:
GET /posts/{post_id}/comments - 描述: 获取帖子的评论列表
- 参数:
post_id(路径参数): 帖子 ID
- 响应:
{
"code": 200,
"message": "success",
"data": [
{
"commentId": 1,
"userId": 1,
"content": "评论内容",
"createdAt": "2024-01-01T00:00:00",
"parentId": null
}
]
}- 接口:
POST /posts/{post_id}/like - 描述: 对帖子进行点赞
- 参数:
post_id(路径参数): 帖子 ID
- 请求体:
{
"userId": 1
}- 接口:
DELETE /posts/{post_id}/like - 描述: 取消对帖子的点赞
- 参数:
post_id(路径参数): 帖子 ID
- 请求体:
{
"userId": 1
}- 接口:
POST /user/follow/{userId} - 描述: 当前用户关注指定用户
- 认证: 需要 Bearer Token
- 参数:
userId(路径参数): 被关注用户 ID
- 响应:
{
"code": 200,
"message": "success",
"data": "关注成功"
}- 错误响应:
{
"code": 400,
"message": "不能关注自己",
"data": null
}- 接口:
DELETE /user/unfollow/{userId} - 描述: 当前用户取消关注指定用户
- 认证: 需要 Bearer Token
- 参数:
userId(路径参数): 被关注用户 ID
- 响应:
{
"code": 200,
"message": "success",
"data": "取消关注成功"
}- 接口:
GET /user/follow/{userId}/check - 描述: 检查当前用户是否关注了指定用户
- 认证: 需要 Bearer Token
- 参数:
userId(路径参数): 被检查的用户 ID
- 响应:
{
"code": 200,
"message": "success",
"data": {
"isFollowing": true
}
}- 接口:
POST /user/block/{userId} - 描述: 当前用户屏蔽指定用户
- 认证: 需要 Bearer Token
- 参数:
userId(路径参数): 被屏蔽者 ID
- 响应:
{
"code": 200,
"message": "success",
"data": "屏蔽成功"
}- 错误响应:
{
"code": 400,
"message": "不能屏蔽自己",
"data": null
}- 接口:
POST /heart/{user_id} - 描述: 给指定用户点红心(自动关注)
- 参数:
user_id(路径参数): 被红心用户 ID
- 请求体:
{
"fromUserId": 1
}- 接口:
DELETE /heart/{user_id} - 描述: 取消对指定用户的红心
- 参数:
user_id(路径参数): 被红心用户 ID
- 请求体:
{
"fromUserId": 1
}- 接口:
GET /matches - 描述: 获取当前用户的匹配列表
- 参数:
user_id(查询参数): 当前用户 ID
- 响应:
{
"code": 200,
"message": "success",
"data": [
{
"matchId": 1,
"user1Id": 1,
"user2Id": 2,
"status": 0,
"createdAt": "2024-01-01T00:00:00"
}
]
}- 接口:
GET /recommended_users - 描述: 获取潜在匹配用户推荐列表
- 参数:
user_id(查询参数): 当前用户 IDtags(查询参数): 用户选择的标签birthday(查询参数): 生日region(查询参数): 地区
- 响应:
{
"code": 200,
"message": "success",
"data": [
{
"userId": 2,
"nickname": "推荐用户",
"tags": ["运动", "音乐"],
"region": "北京"
}
]
}- 接口:
GET /conversations - 描述: 获取当前用户的会话列表
- 认证: 需要 Bearer Token
- 参数:
page(查询参数): 页码,默认 1size(查询参数): 每页数量,默认 20
- 响应:
{
"code": 200,
"message": "success",
"data": [
{
"conversationId": 1,
"otherUserId": 2,
"otherUserNickname": "对方昵称",
"otherUserAvatar": "https://example.com/avatar.jpg",
"lastMessage": "最后一条消息",
"lastMessageType": "text",
"lastMessageTime": "2024-01-01T00:00:00",
"unreadCount": 3,
"createdAt": "2024-01-01T00:00:00"
}
]
}- 接口:
POST /conversations - 描述: 与指定用户创建或获取会话
- 认证: 需要 Bearer Token
- 请求体:
{
"userId": 2
}- 响应:
{
"code": 200,
"message": "success",
"data": {
"conversationId": 1,
"otherUserId": 2,
"otherUserNickname": "对方昵称",
"otherUserAvatar": "https://example.com/avatar.jpg"
}
}- 接口:
GET /conversations/{conversationId} - 描述: 根据会话 ID 获取会话详细信息
- 认证: 需要 Bearer Token
- 参数:
conversationId(路径参数): 会话 ID
- 响应:
{
"code": 200,
"message": "success",
"data": {
"conversationId": 1,
"otherUserId": 2,
"otherUserNickname": "对方昵称",
"otherUserAvatar": "https://example.com/avatar.jpg",
"lastMessage": "最后一条消息",
"unreadCount": 3
}
}- 接口:
GET /conversations/{conversationId}/messages - 描述: 获取指定会话的消息记录
- 认证: 需要 Bearer Token
- 参数:
conversationId(路径参数): 会话 IDpage(查询参数): 页码,默认 1size(查询参数): 每页数量,默认 50
- 响应:
{
"code": 200,
"message": "success",
"data": [
{
"messageId": 1,
"conversationId": 1,
"senderId": 1,
"senderNickname": "发送者昵称",
"senderAvatar": "https://example.com/avatar.jpg",
"contentType": "text",
"content": "消息内容",
"isRead": true,
"createdAt": "2024-01-01T00:00:00"
}
]
}- 接口:
POST /conversations/{conversationId}/messages - 描述: 在指定会话中发送消息
- 认证: 需要 Bearer Token
- 参数:
conversationId(路径参数): 会话 ID
- 请求体:
{
"receiverId": 2,
"contentType": "text",
"content": "消息内容"
}- 响应:
{
"code": 200,
"message": "success",
"data": {
"messageId": 1,
"conversationId": 1,
"senderId": 1,
"contentType": "text",
"content": "消息内容",
"isRead": false,
"createdAt": "2024-01-01T00:00:00"
}
}- 接口:
PUT /conversations/{conversationId}/read - 描述: 标记指定会话的所有消息为已读
- 认证: 需要 Bearer Token
- 参数:
conversationId(路径参数): 会话 ID
- 响应:
{
"code": 200,
"message": "success",
"data": "标记已读成功"
}- 接口:
GET /conversations/{conversationId}/unread-count - 描述: 获取指定会话的未读消息数量
- 认证: 需要 Bearer Token
- 参数:
conversationId(路径参数): 会话 ID
- 响应:
{
"code": 200,
"message": "success",
"data": {
"unreadCount": 5
}
}- 接口:
GET /conversations/unread-count/total - 描述: 获取当前用户所有会话的总未读消息数量
- 认证: 需要 Bearer Token
- 响应:
{
"code": 200,
"message": "success",
"data": {
"totalUnreadCount": 10
}
}- 接口:
PUT /conversations/{id}/mute - 描述: 设置或取消会话的消息免打扰状态
- 认证: 需要 Bearer Token
- 参数:
id(路径参数): 会话 ID
- 请求体:
{
"muted": true
}- 响应:
{
"code": 200,
"message": "success",
"data": "已开启消息免打扰"
}- 接口:
PUT /conversations/{id}/pin - 描述: 设置或取消会话的置顶状态
- 认证: 需要 Bearer Token
- 参数:
id(路径参数): 会话 ID
- 请求体:
{
"pinned": true
}- 响应:
{
"code": 200,
"message": "success",
"data": "已置顶聊天"
}- 接口:
DELETE /conversations/{id}/messages - 描述: 清空指定会话的所有消息
- 认证: 需要 Bearer Token
- 参数:
id(路径参数): 会话 ID
- 响应:
{
"code": 200,
"message": "success",
"data": "聊天记录已清空"
}- 接口:
GET /notifications - 描述: 获取用户通知列表
- 认证: 需要 Bearer Token
- 参数:
page(查询参数): 页码,默认 1size(查询参数): 每页数量,默认 20is_read(查询参数): 是否已读,可选
- 响应:
{
"code": 200,
"message": "success",
"data": [
{
"notificationId": 1,
"type": "follow",
"actorId": 2,
"relatedId": 1,
"createdAt": "2024-01-01T00:00:00",
"isRead": false
}
]
}- 接口:
GET /notifications/unread-count - 描述: 获取当前用户的未读通知数量
- 认证: 需要 Bearer Token
- 响应:
{
"code": 200,
"message": "success",
"data": {
"unreadCount": 5
}
}- 接口:
PUT /notifications/{notificationId}/read - 描述: 标记指定通知为已读
- 认证: 需要 Bearer Token
- 参数:
notificationId(路径参数): 通知 ID
- 响应:
{
"code": 200,
"message": "success",
"data": "标记已读成功"
}- 接口:
PUT /notifications/read-all - 描述: 标记当前用户的所有通知为已读
- 认证: 需要 Bearer Token
- 响应:
{
"code": 200,
"message": "success",
"data": "全部标记为已读"
}- 接口:
DELETE /notifications/{notificationId} - 描述: 删除指定通知
- 认证: 需要 Bearer Token
- 参数:
notificationId(路径参数): 通知 ID
- 响应:
{
"code": 200,
"message": "success",
"data": "删除成功"
}{
"code": 400,
"message": "请求参数错误",
"data": null
}400: 请求参数错误401: 未授权访问403: 禁止访问404: 资源不存在500: 服务器内部错误
{
"code": 404,
"message": "用户不存在",
"data": null
}{
"code": 401,
"message": "token已过期",
"data": null
}{
"code": 400,
"message": "验证码错误",
"data": null
}