# 资讯模块APIs文档

# 资讯分类

# 获取单个资讯分类

GET /api/v2/info/categories/{category.id}
1

请求查询参数:

参数 类型 描述
count_by_author_id string 可选,作者用户ID,统计该作者在每个分类下的资讯数量

响应:

Status: 200 OK
1
{
    "id": 1,                 // 分类ID
    "name": "分类一",        // 分类名称
    "icon": { /* 图片信息 */ },
    "sort": 0,               // 排序字段
    "published_count": 3,    // 已发布的资讯总数
    "trashed_count": 1,      // 已下架/软删除的资讯数
    "infos_count": 5,        // 资讯总数
    "created_at": "2019-04-16 09:25:48",
    "updated_at": "2019-04-16 09:51:32",
    "deleted_at": "2019-04-16 09:51:32", // 分类删除标识
    "author_published_count": 3,     // 指定作者已发布的资讯总数
    "author_trashed_count": 1,       // 指定作者已下架/软删除的资讯数
    "author_infos_count": 5,         // 指定作者资讯总数
    "count_by_author_id": 1          // 客户端给的作者用户ID
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 获取资讯分类列表

GET /api/v2/info/categories
1

查询参数:

参数 类型 描述
trashed string 可选,默认without,选项:
without不包括已删除分类,
with包括已删除分类
only·仅已删除的分类
count_by_author_id string 可选,作者用户ID,统计该作者在每个分类下的资讯数量

响应:

Status: 200 OK
1
[
    { /* 分类数据 */ },
    { /* 分类数据 */ }
]
1
2
3
4

# 添加资讯分类

资讯分类只有拥有 infos:admin 权限的用户才能创建

POST /api/v2/infos/categories
1

输入:

参数 类型 描述
name string 必须,分类名称,不能重复,最大长度24(GB18030长度)
icon string 可选,分类图标的 storage none
sort integer 必须,排序值,越大越靠前

响应:

Status: 201 Created
1
{ /* 分类数据 */ }
1

# 修改资讯分类

资讯分类只有拥有 infos:admin 权限的用户才能更改

PUT|PATCH /api/v2/info/categories/{category.id}
1

输入:

参数 类型 描述
name string 可选,分类名称,不能重复,最大长度24(GB18030长度)
icon string 可选,分类图标的 storage none
sort integer 可选,排序值,越大越靠前
deleted boolean 可选,软删除/恢复分类

响应:

Status: 200 OK
1
{ /* 分类数据 */ }
1

# 删除资讯分类

资讯分类只有拥有 info:admin 权限的用户才能删除,且infos_count>0时禁止删除

DELETE /api/v2/info/categories/{category.id}
1

响应:

Status: 204 No Content
1

# 资讯

# 获取单个资讯

GET /api/v2/infos/{info.id}
1

查询参数:

参数 类型 描述
with string,array<string> 可选,需要返回的关联数据,可选:author,author.verification,category

响应:

Status: 200 OK
1
{
    "id": 1,
    "author_id": 7,   // 资讯作者的用户ID
    "category_id": 2, // 所属分类ID
    "title": "标题",
    "summary": "文字摘要",
    "content": "资讯内容", // 富文本内容
    "content_medias": [ // 资讯内容中的媒体信息
      {"image": { /* 图片信息 */ }, "video": { /* 视频信息 */ }}
    ],
     //  自动提取 content_medias 中的信息,用于列表显示图片或者视频
     //  资讯内容中的媒体(视频)信息
     //  medias 字段 服务器过滤数据规则
     //  1. 过滤掉长宽都小于 125px 的图片
     //  2. 有视频的就只返回第一个视频;
     //  3. 图片超过3个的就返回3个;
     //  4. 有图片的,图片小于3张的返回一个张
     //  否则没有 medias 这个字段,
    "medias": [ 
      {"image": { /* 图片信息 */ }, "video": { /* 视频信息 */ }}
    ],
    "views_count": 3,     // 浏览量
    "likes_count": 0,     // 点赞数量
    "favorites_count": 0, // 收藏数量
    "comments_count": 0,  // 评论数量
    "shares_count": 0,    // 分享数量
    "recommend_at": "2019-07-26 03:43:49",       // 推荐资讯
    "topped_at": "2019-07-26 03:43:49",          // 全局置顶
    "category_topped_at": "2019-07-26 03:43:49", // 分类置顶
    "created_at": "2019-07-26 03:43:49",         // 创建时间
    "updated_at": "2019-07-26 03:43:49",         // 更新时间
    "deleted_at": "2019-07-26 03:43:49",         // 删除标识
    "liked": false,       // 附加字段,当前用户是否已点赞
    "favorited": false,   // 附加字段, 当前用户是否已收藏
    "author": {/* 用户数据 */},   // 关系字段,资讯作者的用户信息
    "category": { /* 分类数据 */} // 关系字段,资讯所属的分类
}
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

# 获取资讯列表

GET /api/v2/infos
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, recommend_at, topped_at,
category_topped_at, created_at, updated_at, deleted_at
如:topped_at desc,created desc
page integer 可选,第几页,如果有此参数,则返回分页模式的数据
with string,array<string> 可选,需要返回的关联数据,可选:author,author.verification,category

响应:

Status: 200 OK
1
[
  {/* 单个资讯信息 */},
  {/* 单个资讯信息 */}
]
1
2
3
4

# 添加资讯

infos:admin 权限的用户才可以为添加资讯

POST /api/v2/infos
1

输入:

参数 类型 描述
author_id integer 可选,作者用户ID,默认当前用户
category_id integer 必须,资讯所属分类ID
title string 必须,资讯标题,最大长度60(GB18030长度)
summary string 可选,资讯摘要,最大长度160个字符
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

响应:

Status: 201 Created
1
{
    /* 响应字段和获取单个资讯一致,但不包括附加字段和关系字段 */
}
1
2
3

# 修改资讯

普通用户只能修改自己的资讯,有 infos:admin 权限的用户可以更新任何人的资讯

PATCH /api/v2/infos/{info.id}
1

输入:

参数 类型 描述
author_id integer 可选,作者用户ID,默认当前用户
category_id integer 可选,资讯所属分类ID
title string 可选,资讯标题,最大长度60(GB18030长度)
summary string 可选,资讯摘要,最大长度160个字符
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: 200 OK
1
{
    /* 响应字段和获取单个资讯一致,但不包括附加字段和关系字段 */
}
1
2
3

# 删除资讯

普通用户只删除自己创建的资讯,有 infos:admin 权限的用户可以删除任何人的资讯;删除资讯将同时删除点赞,收藏,评论关系绑定

DELETE /api/v2/infos/{info.id}
1

响应:

Status: 204 No Content
1

# 点赞资讯

PUT|PATCH /api/v2/infos/{info.id}/like
1

响应:

Status: 204 No Content
1

# 取消点赞资讯

DELETE /api/v2/infos/{info.id}/like
1

响应:

Status: 204 No Content
1

# 收藏资讯

PUT|PATCH /api/v2/infos/{info.id}/favorite
1

响应:

Status: 204 No Content
1

# 取消收藏资讯

DELETE /api/v2/infos/{info.id}/favorite
1

响应:

Status: 204 No Content
1

# 分享资讯

PUT /api/v2/infos/{info.id}/hit-share
1

正常响应:

Status: 204 No Content
1

获取积分响应:

Status: 201 Created
1
{
  "amount": 2
}
1
2
3

# 发布资讯评论

发布资讯评论调用发布动态的接口,其中 repostable_type 设置为 infosrepostable_id 设置要评论的资讯ID。

服务端返回动态数据时,会附加 repostable(关联数据) repostable_type(关联数据的类型) repostable_id(关联数据的ID)三个字段。

# 获取资讯评论

获取指定资讯评论

GET /api/v2/infos/{info.id}/comments
1

获取全部资讯评论

GET /api/v2/info/comments
1

查询参数:

参数 类型 描述
type string 可选,要获取的评论类型,默认全部,选项:
image仅获取带图片的评论
video仅获取带视频的评论
image_or_video 获取带图片或视频的评论
after integer 可选,本地最后一条数据的ID
order string 可选,默认 desc,可选 asc,desc
limit integer 可选,获取条数,默认15

响应:

Status: 200 OK
1
[
  {/*  单个动态数据 */}
]
1
2
3