# 问答API
# 发布问题
POST /api/v2/api/v2/wendas
1
传递参数
参数 | 类型 | 描述 |
---|---|---|
title | string | 必填, 问题,? 或者 ? 结尾 |
content | string | 必填, 问题详情 |
offer | integer | 必填, 悬赏的积分数量,无悬赏请传0 |
响应
Status: 201 Created
1
响应体,问答数据结构
{
"id": 11,
"author_id": 3,
"category_id": 1,
"title": "这儿是问题标题吗?",
"content": "<p>fdsafdsafdsaf</p><img data-width=\"690\" data-height=\"1035\" src=\"http://local.thinksns-plus.com/storage/public:MjAyMC8wMS8wOC9yWmw5UWl5Yk5TalpZeGJ6ekxZWDVnRmdERklWcWt3YWNJVHFiN1RkV0hueFUxWXFNU2Jrcm0wQkpkaWx0QkpOLmpwZWc=\" data-src-node=\"public:2020/01/08/rZl9QiybNSjZYxbzzLYX5gFgDFIVqkwacITqb7TdWHnxU1YqMSbkrm0BJdiltBJN.jpeg\"><img data-width=\"970\" data-height=\"820\" src=\"http://local.thinksns-plus.com/storage/public:MjAyMC8wMS8wOC9TVTNFUmc0STREQ3N1MzdHcDhvS0Z2eWpTaUVBV0pJaHBBdHlkclVzYVhLbDk4b0dmMnNycEdnMEt6NHdEYWdFLmpwZw==\" data-src-node=\"public:2020/01/08/SU3ERg4I4DCsu37Gp8oKFvyjSiEAWJIhpAtydrUsaXKl98oGf2srpGg0Kz4wDagE.jpg\"><p><br></p>",
"offer": 0,//
"adoption": 0,
"views_count": 85,
"likes_count": 0,
"favorites_count": 1,
"comments_count": 2,
"shares_count": 0,
"hot_index": 0,
"created_at": "2020-01-08 10:51:26",
"updated_at": "2020-01-13 03:59:45",
"liked": false,
"favorited": false,
"answers": false, // 是否已经回答``
"author": { // with参数中含有author的时候返回
"id": 3,
"name": "七夜",
"email": null,
"phone": "15694005009",
"bio": "牛会展中心温水煮青蛙",
"sex": 0,
"location": "四川省 成都市",
"invite_code": "10ABC2",
"avatar": {
"url": "http://local.thinksns-plus.com/storage/public:MjAxOS8xMi8yNC9XMlU0d29RUzBqeUtyRzlPYThMbDBZTkpZcXZsaW4zUDQ2dnpoTzczR2pNdXdTTm5FcndjRTF0YVFzQ1IydjJRLmpwZw==",
"vendor": "local",
"mime": "image/jpeg",
"size": 110699,
"dimension": {
"width": 463,
"height": 463
}
},
"feed_topics_count": 0,
"verification": null, // with参数中含有 author 和 author.verification时返回
"has_follower": false,
"has_following": false,
"created_at": "2019-12-24T07:13:04Z",
"updated_at": "2019-12-24T07:46:25Z",
"vip": null
},
"first_answer": null // null 或者最新回复
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 查询单个问题
GET /api/v2/wendas/{wenda.id}
1
参数 | 类型 | 描述 |
---|---|---|
with | array ,string | 可选, [author , author.verification ],author :创建者信息(默认不返回认证信息),author.verification :创建者信息中返回认证信息 |
响应
Status: 200 OK
1
响应体
{ /** 同创建接口返回 */ }
1
# 查询问题列表
请求
GET /api/v2/api/v2/wendas
1
参数 | 类型 | 描述 |
---|---|---|
id | integer,string | 可选,问题ID,多个逗号分隔 |
author_id | integer,string | 可选,作者用户ID,不设置则查询全部用户,多个逗号分隔 |
category_id | integer,string | 可选,分类ID,不设置则查询全部分类,多个逗号分隔 |
trashed | string | 可选,默认without ,选项:without 不包括已删除的问题with 包括已删除的问题only 仅已删除的问题 |
recommend | integer | 可选,查询推荐状态,默认不限,选项:0,1 |
keyword | string | 可选,查询关键字,仅在标题中搜索 |
liked | string | 可选,无默认值,默认不返回点赞状态check 返回列表中包含liked 字段表示点赞状态 |
favorited | string | 可选,无默认值,默认不返回收藏状态check 返回列表中包含favorited 字段表示收藏状态 |
list_type | string | 可选,无默认值,选项:only_liked 仅返回已点赞的问题only_favorited 仅返回已收藏的问题 |
offset | integer | 可选,本地已有加载数据数量 |
limit | integer | 可选,获取条数,默认15 |
order | string | 可选,排序,多个逗号分隔;支持的排序字段: id, views_count, likes_count, favorites_count, comments_count, shares_count, hot_index, recommend_at, topped_at, category_topped_at, created_at, updated_at, deleted_at 如:topped_at desc,created desc |
page | integer | 可选,第几页,如果有此参数,则返回分页模式的数据(多为后台使用,app端建议使用offset) |
with | string,array<string> | 可选,需要返回的关联数据,可选:author ,author.verification ,category |
响应
Status: 200 OK
1
响应体
[
{/** 单个问题 */},
{/** 单个问题 */}
]
1
2
3
4
2
3
4
# 修改问题
普通用户只能修改自己的问题,有
wenda:admin
权限的用户可以更新任何人的问题
PATCH /api/v2/wendas/{wenda.id}
1
输入:
参数 | 类型 | 描述 |
---|---|---|
author_id | integer | 可选,作者用户ID,默认当前用户 |
category_id | integer | 可选,问题所属分类ID |
offer | integer | 必选,问题悬赏,已采纳的问题不能撤销打赏 |
title | string | 可选,问题标题,最大长度60(GB18030长度) |
content | string | 可选,问题内容,65000个字节以内 |
content_medias | array | 可选,问题内容中的媒体(图片、视频),必须是一个数组,0~100个元素 |
content_medias.* | object | 必须,图片或视频,必须一个键值对 |
content_medias.*.image | string | 必须,图片的 storage node |
content_medias.*.video | string | 可选,视频的 storage node |
recommend | boolean | 可选,是否推荐问题,需要权限infos:admin |
topped | boolean | 可选,是否全局置顶问题,需要权限infos:admin |
category_topped | boolean | 可选,是否分类置顶问题,需要权限infos:admin |
deleted | boolean | 可选,问题删除状态,需要权限 |
响应
Status: 201 Created
1
响应体
{
/** 同创建接口 */
}
1
2
3
2
3
# 删除问题
普通用户只删除自己创建的问题,有
wenda:admin
权限的用户可以删除任何人的问题;删除问题将同时删除点赞,收藏,评论关系绑定
DELETE /api/v2/wendas/{wenda.id}
1
响应:
Status: 204 No Content
1
# 点赞问题
PUT|PATCH /api/v2/wendas/{wenda.id}/like
1
响应:
Status: 204 No Content
1
# 取消点赞问题
DELETE /api/v2/wendas/{wenda.id}/like
1
响应:
Status: 204 No Content
1
# 收藏问题
PUT|PATCH /api/v2/wendas/{wenda.id}/favorite
1
响应:
Status: 204 No Content
1
# 取消收藏问题
DELETE /api/v2/wendas/{wenda.id}/favorite
1
响应:
Status: 204 No Content
1
# 分享问题
PUT /api/v2/wendas/{wenda.id}/hit-share
1
正常响应:
Status: 204 No Content
1
获取积分响应:
Status: 201 Created
1
{
"amount": 2 //分享获得的积分奖励,单位:积分
}
1
2
3
2
3
# 发布回答
发布回答调用发布动态的接口,其中
repostable_type
设置为wendas
,repostable_id
设置要评论的问答ID。
服务端返回动态数据时,会附加
repostable
(关联数据)repostable_type
(关联数据的类型)repostable_id
(关联数据的ID)三个字段。
# 获取问题答案
获取指定问题的答案
GET /api/v2/wendas/{wenda.id}/comments
1
获取全部答案
GET /api/v2/wenda-comments
1
查询参数:
参数 | 类型 | 描述 |
---|---|---|
type | string | 可选,要获取的评论类型,默认全部,选项:image 仅获取带图片的评论video 仅获取带视频的评论image_or_video 获取带图片或视频的评论 |
after | integer | 可选,本地最后一条数据的ID, 仅最新答案中可用 |
offset | integer | 可选,本地已有(采纳答案不包含在其中)的数据量, 热门回答必须采用方案 |
order | string | 可选,默认 id,desc ,可选 [id,desc , id,asc , hot,desc , hot,asc ] |
limit | integer | 可选,获取条数,默认15 |
for_user | integer | 可选,指定用户收到的回答 |
user | integer | 可选,指定用户发布的回答 |
exclude_adoption | boolean | 可选,排除被采纳的答案, 和 被采纳的答案配合使用 |
响应:
Status: 200 OK
1
[
{/* 单个动态数据 */}
]
1
2
3
2
3
返回体中包含adoption
字段,表示该回答是否被采纳
# 采纳答案
POST /api/v2/wendas/{wenda.id}/adoption/{feed.id}
1
wenda.id
为问题的id,feed.id
为回答的id
参数 | 类型 | 描述 |
---|---|---|
remark | string | 可选, 对答案的点评 |
响应
Status: 201 Created
1
# 被采纳的答案
GET /api/v1/wendas/{wenda}/adoptions
1
响应
Status: 200 OK
1
** 问题详情中如果
adoption
的值为真,则可以调用此接口获取被采纳的答案**
用数组的方式应对可能会出现的多个采纳
响应体
[
{/** 单个回答 **/},
{/** 单个回答 **/},
]
1
2
3
4
2
3
4
# 问答相关推送类型
系统通知接口api/v2/user/notification-statistics
中返回对应字段
notification:question-answered
问题被评论
notification:answer-adopted
回答被采纳
# 问答相关通知列表
GET /api/v2/user/wenda/notifications
1
请求参数
名称 | 类型 | 描述 |
---|---|---|
offset | integer | 可选,偏移量。 |
limit | integer | 可选,分页量 |
count | boolean | 可选,统计数量 |
type | string | 必选,需要处理的类型answer 被回答, adoption 回答被采纳 |
返回体1,返回统计数
5
1
返回体2,返回具体的数据列表
[
// type = adoption
{
"id": "662982fd-f1fc-4d82-adda-365acba99170",
"created_at": "2019-12-14T09:48:58Z",
"read_at": null,
"data": {
"wenda": {
"id": 1,
"title": "我的问题?"
}
}
},
// type = answer
{
"id": "5bb6f50e-31b6-4baf-a8b3-f4577e29449f",
"created_at": "2019-12-14T09:44:20Z",
"read_at": null,
"data": {
"sender": {
"id": 2,
"name": "wayne"
},
"wenda": {
"id": 1,
"title": "我的问题",
}
}
}
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30