书架模块接口文档

一、接口概述

书架模块接口用于管理用户订阅小的说列表。提供获取书架列表、获取小说介绍、获取小说更新判断、置顶和取消置顶、从书架移除以及订阅功能等接口,支持排序规则和时间显示规则,及时提供给用户小说最新章节所在的链接。


二、接口列表

1. 获取书架列表

  • 接口名称: 获取书架列表
  • 接口路径: /api/bookshelf
  • 请求方法: GET
  • 描述: 获取当前用户的书架列表,支持排序规则。
请求参数
参数名 类型 是否必填 描述 默认值
sort String 排序规则 update_time
可选值:update_time(按更新时间排序),subscribe_time(按订阅时间排序)
返回结果
  • 状态码: 200
  • 返回格式: JSON
返回参数说明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"success": true,
"msg": "success",
"data": {
"novels": [
{
"id": int, // 小说ID
"name": String, // 小说名称
"is_top": boolean, // 是否置顶
"is_read": boolean, // 是否已读
"update_time": int, // 更新时间(时间戳)
"display_time": String // 显示的时间描述(如:3天前)
},
...
]
}
}
示例请求
  • 请求URL: /api/bookshelf?sort=update_time
  • 请求方法: GET
示例响应
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"success": true,
"msg": "success",
"data": {
"novels": [
{
"id": 1,
"name": "小说名称1",
"is_top": false,
"is_read": false,
"update_time": 1634688000,
"display_time": "3天前"
},
{
"id": 2,
"name": "小说名称2",
"is_top": true,
"is_read": true,
"update_time": 1634774400,
"display_time": "20分钟前"
}
]
}
}

2. 获取小说详情信息

  • 接口名称: 获取小说详情信息
  • 接口路径: /book/info/getInfoById
  • 请求方法: GET
  • 描述: 获取指定小说的详细信息。
请求参数
参数名 类型 是否必填 描述
novelId int 小说ID
返回结果
  • 状态码: 200
  • 返回格式: JSON
返回参数说明
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
{
"success": boolean, // 操作是否成功
"msg": String, // 操作信息
"data": {
"hasSubscribe": boolean, // 用户是否已订阅
"novel": {
"id": int, // 小说ID
"authorId": int, // 作者ID
"status": int, // 小说状态
"type": int, // 小说类型
"bookName": String, // 小说名称
"authorName": String, // 作者名称
"desc": String, // 小说简介
"subscribeNum": int, // 订阅人数
"searchNum": int, // 搜索次数
"bookUrl": String, // 小说链接
"cover": String, // 封面图片链接
"lastUpdateTime": String, // 最后更新时间
"lastestChapter": String, // 最新章节名称
"chapterUrl": String, // 最新章节链接
"addTime": String, // 添加时间
"updateTime": String // 更新时间
}
}
}
示例请求
  • 请求URL: /book/info/getInfoById?novelId=2
  • 请求方法: GET
示例响应
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
{
"success": true,
"msg": "success",
"data": {
"hasSubscribe": false,
"novel": {
"id": 2,
"authorId": 1,
"status": 1,
"type": 1,
"bookName": "天道图书馆",
"authorName": "唐家三少",
"desc": "【2017最火玄幻作品,海外点推双榜第一】张悬穿越异界,成了一名光荣的教师,脑海中多出了一个神秘的图书馆。\n  只要他看过的东西,无论人还是物,都能自动形成书籍,记录下对方各种各样的缺点,于是,他牛大了!\n  教学生、收徒弟,开堂授课,调教最强者,传授天下。\n  “灼阳大帝,你怎么不喜欢穿内裤啊?堂堂大帝,能不能注意点形象?”\n  “玲珑仙子,你如果晚上再失眠,可以找我嘛,我这个人唱安眠曲很有一套的!”\n  “还有你,乾坤魔君,能不能少吃点大葱,想把老子熏死吗?\n  这是一个师道传承,培养、指点世界最强者的牛逼拉风故事。",
"subscribeNum": 24,
"searchNum": 0,
"bookUrl": "https://book.qidian.com/info/1034360760/",
"cover": "cc52431b-136f-c07a-b54d-67b0ef66515b.jpg",
"lastUpdateTime": "2020-07-16T14:20:06.000+00:00",
"lastestChapter": "第六十二章 看书",
"chapterUrl": "https://read.qidian.com/chapter/YpTCe7ZNThACpOPIBx",
"addTime": "2020-07-16T13:33:25.000+00:00",
"updateTime": "2020-07-23T13:33:25.000+00:00"
}
}
}

3. 获取小说更新判断信息

  • 接口名称: 获取小说更新判断信息
  • 接口路径: /book/info/getLastUpdateTag
  • 请求方法: GET
  • 描述: 判断指定小说是否有最新更新。
请求参数
参数名 类型 是否必填 描述
novelId int 小说ID
tagId int 标签ID
返回结果
  • 状态码: 200
  • 返回格式: JSON
返回参数说明
1
2
3
4
5
{
"success": boolean, // 操作是否成功
"msg": String, // 操作信息
"data": boolean // false是已经最新,true是存在刚更新章节
}
示例请求
  • 请求URL: /book/info/getLastUpdateTag?novelId=2&tagId=1
  • 请求方法: GET
示例响应
1
2
3
4
5
{
"success": true,
"msg": "success",
"data": false
}

4. 置顶小说

  • 接口名称: 置顶小说
  • 接口路径: /api/bookshelf/top
  • 请求方法: POST
  • 描述: 将指定小说置顶。
请求参数
参数名 类型 是否必填 描述
novelId int 小说ID
返回结果
  • 状态码: 200
  • 返回格式: JSON
返回参数说明
1
2
3
4
{
"success": boolean, // 操作是否成功
"msg": String // 操作信息
}
示例请求
  • 请求URL: /api/bookshelf/top
  • 请求方法: POST
  • 请求体:
    1
    2
    3
    {
    "novelId": 2
    }
示例响应
1
2
3
4
{
"success": true,
"msg": "success"
}

5. 取消置顶小说

  • 接口名称: 取消置顶小说
  • 接口路径: /api/bookshelf/untop
  • 请求方法: POST
  • 描述: 取消指定小说的置顶状态。
请求参数
参数名 类型 是否必填 描述
novelId int 小说ID
返回结果
  • 状态码: 200
  • 返回格式: JSON
返回参数说明
1
2
3
4
{
"success": boolean, // 操作是否成功
"msg": String // 操作信息
}
示例请求
  • 请求URL: /api/bookshelf/untop
  • 请求方法: POST
  • 请求体:
    1
    2
    3
    {
    "novelId": 2
    }
示例响应
1
2
3
4
{
"success": true,
"msg": "success"
}

6. 从书架移除小说

  • 接口名称: 从书架移除小说
  • 接口路径: /api/bookshelf/remove
  • 请求方法: POST
  • 描述: 从书架中移除指定小说。
请求参数
参数名 类型 是否必填 描述
novelId int 小说ID
返回结果
  • 状态码: 200
  • 返回格式: JSON
返回参数说明
1
2
3
4
{
"success": boolean, // 操作是否成功
"msg": String // 操作信息
}
示例请求
  • 请求URL: /api/bookshelf/remove
  • 请求方法: POST
  • 请求体:
    1
    2
    3
    {
    "novelId": 2
    }
示例响应
1
2
3
4
{
"success": true,
"msg": "success"
}

7. 订阅小说

  • 接口名称: 订阅小说
  • 接口路径: /api/bookshelf/subscribe
  • 请求方法: POST
  • 描述: 订阅指定小说。用户最多可订阅五本小说。
请求参数
参数名 类型 是否必填 描述
novelId int 小说ID
返回结果
  • 状态码: 200
  • 返回格式: JSON
返回参数说明
1
2
3
4
{
"success": boolean, // 操作是否成功
"msg": String // 操作信息
}
示例请求
  • 请求URL: /api/bookshelf/subscribe
  • 请求方法: POST
  • 请求体:
    1
    2
    3
    {
    "novelId": 2
    }
示例响应
1
2
3
4
{
"success": true,
"msg": "success"
}

检查是否达到最大订阅数

  • 接口名称: 检查是否达到最大订阅数
  • 接口路径: /api/bookshelf/check-subscribe-limit
  • 请求方法: GET
  • 描述: 检查当前用户是否已达到最大订阅数(5本小说)。
  • 请求参数: 无

返回结果

1
2
3
4
5
6
7
8

{
"success": boolean,
"msg": String,
"data": {
"is_limit_reached": boolean
}
}
注意事项
  • 如果用户已订阅五本小说,则无法再订阅新的小说,返回相应的错误信息。
  • 订阅状态会在用户订阅和取消订阅时更新。

8. 标记小说为已读

  • 接口名称: 标记小说为已读
  • 接口路径: /api/bookshelf/mark-read
  • 请求方法: POST
  • 描述: 标记指定小说为已读。
请求参数
参数名 类型 是否必填 描述
novelId int 小说ID
返回结果
1
2
3
4
{
"success": boolean,
"msg": String
}
示例请求
  • 请求URL: /api/bookshelf/mark-read
  • 请求方法: POST
  • 请求体:
    1
    2
    3
    {
    "novelId": 2
    }
示例响应
1
2
3
4
{
"success": true,
"msg": "success"
}

9. 标记小说为未读

  • 接口名称: 标记小说为未读
  • 接口路径: /api/bookshelf/mark-unread
  • 请求方法: POST
  • 描述: 标记指定小说为未读。
请求参数
参数名 类型 是否必填 描述
novelId int 小说ID
返回结果
1
2
3
4
{
"success": boolean,
"msg": String
}
示例请求
  • 请求URL: /api/bookshelf/mark-unread
  • 请求方法: POST
  • 请求体:
    1
    2
    3
    {
    "novelId": 2
    }
示例响应
1
2
3
4
{
"success": true,
"msg": "success"
}

三、注意事项

  1. 如果未指定排序规则,默认按更新时间排序。
  2. display_time 字段根据更新时间与当前时间的差值动态生成。
  3. 时间显示规则:
    • 大于一周: 显示具体日期(如:10月20日)
    • 小于一周: 显示天数(如:3天前)
    • 小于一天: 显示小时数(如:3小时前)
    • 小于1小时: 显示分钟数(如:20分钟前)
  4. 用户最多可订阅五本小说,订阅状态会在用户订阅和取消订阅时更新。