书架模块接口文档
一、接口概述
书架模块接口用于管理用户订阅小的说列表。提供获取书架列表、获取小说介绍、获取小说更新判断、置顶和取消置顶、从书架移除以及订阅功能等接口,支持排序规则和时间显示规则,及时提供给用户小说最新章节所在的链接。
二、接口列表
1. 获取书架列表
- 接口名称: 获取书架列表
- 接口路径:
/api/bookshelf
- 请求方法: GET
- 描述: 获取当前用户的书架列表,支持排序规则。
请求参数
| 参数名 |
类型 |
是否必填 |
描述 |
默认值 |
| sort |
String |
否 |
排序规则 |
update_time |
|
|
|
可选值:update_time(按更新时间排序),subscribe_time(按订阅时间排序) |
|
返回结果
返回参数说明
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, "name": String, "is_top": boolean, "is_read": boolean, "update_time": int, "display_time": String }, ... ] } }
|
示例请求
- 请求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 |
返回结果
返回参数说明
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, "authorId": int, "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 |
返回结果
返回参数说明
1 2 3 4 5
| { "success": boolean, "msg": String, "data": boolean }
|
示例请求
- 请求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 |
返回结果
返回参数说明
1 2 3 4
| { "success": boolean, "msg": String }
|
示例请求
- 请求URL:
/api/bookshelf/top
- 请求方法: POST
- 请求体:
示例响应
1 2 3 4
| { "success": true, "msg": "success" }
|
5. 取消置顶小说
- 接口名称: 取消置顶小说
- 接口路径:
/api/bookshelf/untop
- 请求方法: POST
- 描述: 取消指定小说的置顶状态。
请求参数
| 参数名 |
类型 |
是否必填 |
描述 |
| novelId |
int |
是 |
小说ID |
返回结果
返回参数说明
1 2 3 4
| { "success": boolean, "msg": String }
|
示例请求
- 请求URL:
/api/bookshelf/untop
- 请求方法: POST
- 请求体:
示例响应
1 2 3 4
| { "success": true, "msg": "success" }
|
6. 从书架移除小说
- 接口名称: 从书架移除小说
- 接口路径:
/api/bookshelf/remove
- 请求方法: POST
- 描述: 从书架中移除指定小说。
请求参数
| 参数名 |
类型 |
是否必填 |
描述 |
| novelId |
int |
是 |
小说ID |
返回结果
返回参数说明
1 2 3 4
| { "success": boolean, "msg": String }
|
示例请求
- 请求URL:
/api/bookshelf/remove
- 请求方法: POST
- 请求体:
示例响应
1 2 3 4
| { "success": true, "msg": "success" }
|
7. 订阅小说
- 接口名称: 订阅小说
- 接口路径:
/api/bookshelf/subscribe
- 请求方法: POST
- 描述: 订阅指定小说。用户最多可订阅五本小说。
请求参数
| 参数名 |
类型 |
是否必填 |
描述 |
| novelId |
int |
是 |
小说ID |
返回结果
返回参数说明
1 2 3 4
| { "success": boolean, "msg": String }
|
示例请求
- 请求URL:
/api/bookshelf/subscribe
- 请求方法: POST
- 请求体:
示例响应
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 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 4
| { "success": true, "msg": "success" }
|
三、注意事项
- 如果未指定排序规则,默认按更新时间排序。
display_time 字段根据更新时间与当前时间的差值动态生成。
- 时间显示规则:
- 大于一周: 显示具体日期(如:10月20日)
- 小于一周: 显示天数(如:3天前)
- 小于一天: 显示小时数(如:3小时前)
- 小于1小时: 显示分钟数(如:20分钟前)
- 用户最多可订阅五本小说,订阅状态会在用户订阅和取消订阅时更新。