获取标签列表,支持分页、搜索、别名查询等功能。
请求方式 | GET /api/tags |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
id | int | 否 | 标签ID,精确查找单个标签 |
alias | string | 否 | 标签别名,精确查找单个标签 |
hot | int | 否 | 获取热门标签,指定数量 |
random | int | 否 | 获取随机标签,指定数量 |
novel_title | string | 否 | 根据小说标题获取相关标签 |
fields | string | 否 | 指定返回字段,逗号分隔,如 id,name,alias |
字段 | 类型 | 说明 |
---|---|---|
id | int | 标签ID |
name | string | 标签名称 |
alias | string | 标签别名 |
abbr | string | 拼音首字母缩写 |
description | string | 标签描述 |
novel_count | int | 关联小说数量 |
is_public | int | 是否公开(1=公开,0=非公开) |
[
{
"id": 1,
"name": "科幻",
"alias": "sci-fi",
"abbr": "kh",
"description": "科学幻想类小说",
"novel_count": 45
},
{
"id": 2,
"name": "玄幻",
"alias": "xuanhuan",
"abbr": "xh",
"description": "玄幻修仙类小说",
"novel_count": 32
}
]
{
"id": 1,
"name": "科幻",
"alias": "sci-fi",
"abbr": "kh",
"description": "科学幻想类小说",
"novel_count": 45,
"is_public": 1
}
GET /api/tags
GET /api/tags?id=1
GET /api/tags?alias=sci-fi
GET /api/tags?hot=10
GET /api/tags?random=5
GET /api/tags?novel_title=三体
GET /api/tags?fields=id,name,alias
is_public=1
)。id
或 alias
参数时,返回单个标签对象而非数组。novel_count
字段会自动计算每个标签关联的小说数量。fields
参数可以只返回需要的字段,减少数据传输量。获取作家列表,支持分页、筛选和搜索功能。
请求方式 | GET /api/author |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
id | int | 否 | 作者ID,精确查找单个作者 |
pen_name | string | 否 | 作者笔名,精确查找单个作者 |
random | int | 否 | 获取随机作者,指定数量(默认6) |
dead | string | 否 | 筛选条件:1 =已去世,0 =在世,不传=全部 |
page | int | 否 | 页码,默认1 |
page_size | int | 否 | 每页数量,默认24 |
size | int | 否 | 每页数量(兼容参数,等同于page_size) |
fields | string | 否 | 指定返回字段,逗号分隔,如 id,pen_name,avatar |
id
或 pen_name
参数,返回单个作者对象fields
参数可只返回需要的字段
字段 | 类型 | 说明 |
---|---|---|
id | int | 作者ID |
pen_name | string | 笔名 |
alias | string | 别名/马甲 |
real_name | string | 本名 |
nationality | string | 国籍 |
gender | string | 性别 |
ethnicity | string | 民族 |
age | int | 年龄 |
province | string | 省份 |
identity | string | 身份/职业 |
signed_website | string | 签约网站 |
achievements | string | 主要成就 |
bio | string | 个人简介 |
avatar | object | 头像对象,含 String (头像URL)和 Valid (是否有效) |
is_dead | bool | 是否已去世 |
is_public | bool | 是否公开 |
created_at | string | 创建时间(ISO8601) |
updated_at | string | 更新时间(ISO8601) |
{
"authors": [
{
"id": 1,
"pen_name": "刘慈欣",
"alias": "大刘",
"real_name": "刘慈欣",
"nationality": "中国",
"gender": "男",
"ethnicity": "汉族",
"age": 60,
"province": "山西",
"identity": "作家、工程师",
"signed_website": "起点中文网",
"achievements": "雨果奖获得者",
"bio": "中国科幻作家,代表作《三体》系列。",
"avatar": {"String": "/avatar/liucixin.jpg", "Valid": true},
"is_dead": false,
"is_public": true,
"created_at": "2023-01-01T00:00:00Z",
"updated_at": "2024-06-07T12:00:00Z"
}
],
"total_authors": 156,
"total_pages": 7,
"page": 1,
"page_size": 24
}
{
"authors": [
{
"id": 1,
"pen_name": "刘慈欣",
"alias": "大刘",
"real_name": "刘慈欣",
"nationality": "中国",
"gender": "男",
"ethnicity": "汉族",
"age": 60,
"province": "山西",
"identity": "作家、工程师",
"signed_website": "起点中文网",
"achievements": "雨果奖获得者",
"bio": "中国科幻作家,代表作《三体》系列。",
"avatar": {"String": "/avatar/liucixin.jpg", "Valid": true},
"is_dead": false,
"is_public": true,
"created_at": "2023-01-01T00:00:00Z",
"updated_at": "2024-06-07T12:00:00Z"
}
],
"total_authors": 1,
"total_pages": 1,
"page": 1,
"page_size": 1
}
{
"authors": [
{
"id": 1,
"pen_name": "刘慈欣",
"avatar": "/avatar/liucixin.jpg"
}
],
"total_authors": 156,
"total_pages": 156,
"page": 1,
"page_size": 1
}
GET /api/author?page=1&page_size=20
GET /api/author?id=1
GET /api/author?pen_name=刘慈欣
GET /api/author?dead=1&page=1&page_size=10
GET /api/author?dead=0&page=1&page_size=10
GET /api/author?random=6
GET /api/author?fields=id,pen_name,avatar
id
或 pen_name
参数时,返回单个作者的包装格式。avatar
字段为对象格式,包含 String
(URL)和 Valid
(是否有效)。fields
参数时,avatar
字段会简化为字符串格式。dead
参数支持字符串格式:"1"
、"0"
。size
和 page_size
参数功能相同,推荐使用 page_size
。获取小说列表或单本详情,支持多种筛选、字段定制和分页。
请求方式 | GET /api/novel |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
id | int | 否 | 小说ID,返回单本详情,和分页参数互斥 |
title | string | 否 | 小说标题,返回单本详情,和分页参数互斥 |
user_id | int | 否 | 用户ID,返回该用户最近阅读小说(配合 fields=note 返回读书笔记) |
page | int | 否 | 页码,默认1 |
size | int | 否 | 每页数量,默认20,最大100 |
fields | string | 否 | 只返回指定字段,逗号分隔,如 fields=title,cover |
exclude | string | 否 | 排除指定字段,逗号分隔,如 exclude=summary |
author | string | 否 | 作家笔名筛选 |
author_id | int | 否 | 作家ID筛选 |
tag | string | 否 | 标签别名筛选 |
keyword | string | 否 | 关键字模糊搜索 |
random | int/bool | 否 | 1为随机返回N本小说(配合size) |
guest | int | 否 | 以该作品ID为基础,优先推荐与其标签有重叠的小说 |
guest_title | string | 否 | 以该作品标题为基础,优先推荐与其标签有重叠的小说 |
sort | string | 否 | 排行榜/排序类型,支持:
|
order | string | 否 | 排序方式,asc (升序)或 desc (降序),默认 desc |
date_type | string | 否 | "发布" 或 "完结",配合 sort=date 或 year_month 使用 |
year_month | string | 否 | 年月筛选,如 202405 ,配合 date_type 使用 |
year_list | string | 否 | "发布" 或 "完结",返回有数据的年份数组 |
badge_id | int | 否 | 徽章ID,筛选拥有该徽章的所有作品,支持分页和字段过滤 |
readed_user | string | 否 | 小说标题,返回该小说的已读用户列表,支持分页 |
id
或 title
参数,则返回该小说的完整详情对象(含 badges、tags、pen_name、author_alias、author_realname、complete_date、first_order、achievements 等),不分页。字段 | 类型 | 说明 |
---|---|---|
id | int | 小说ID |
title | string | 书名 |
alias | string | 别名(多个用"|"分隔) |
author_id | int | 作者ID |
pen_name | string | 作者笔名 |
genre | string | 题材类型 |
word_count | int | 字数 |
status | string | 状态(连载中/已完结) |
publish_date | string | 发布日期 |
complete_date | string | 完结日期 |
summary | string | 简介 |
first_order | int | 首订数据 |
average_sub | int | 均订数据 |
max_sub | int | 高订数据 |
achievements | int | 盟主数量 |
original_site | string | 首发站点 |
read_link | string | 在线试读链接 |
avg_rating | float | 平均评分 |
rating_count | int | 评分人数 |
is_public | bool | 是否公开 |
cover | object | 封面对象,含 String (封面URL)和 Valid (是否有效) |
created_at | string | 创建时间(ISO8601) |
updated_at | string | 更新时间(ISO8601) |
tags | array | 标签数组(详情查询时返回) |
badges | array | 徽章数组(详情查询时返回) |
note | string | 用户笔记(需指定user_id和fields=note) |
all_notes | array | 所有用户笔记列表(需指定fields=all_notes) |
{
"page": 1,
"size": 20,
"total": 1234,
"novels": [
{
"id": 1,
"title": "三体",
"alias": "Three-Body",
"author_id": 10,
"pen_name": "刘慈欣",
"genre": "科幻",
"word_count": 300000,
"status": "已完结",
"publish_date": "2008-01-01T00:00:00Z",
"complete_date": "2010-01-01T00:00:00Z",
"summary": "地球往事三部曲之一。",
"first_order": 1000,
"average_sub": 800,
"max_sub": 1200,
"achievements": 50,
"original_site": "起点中文网",
"read_link": "https://www.qidian.com/book/1",
"avg_rating": 9.5,
"rating_count": 10000,
"is_public": true,
"cover": {"String": "/covers/1.jpg", "Valid": true},
"created_at": "2008-01-01T00:00:00Z",
"updated_at": "2010-01-01T00:00:00Z"
}
]
}
GET /api/novel?page=1&size=20
GET /api/novel?id=1
GET /api/novel?title=三体
GET /api/novel?author=刘慈欣
GET /api/novel?tag=sci-fi
GET /api/novel?keyword=科幻
GET /api/novel?random=1&size=10
GET /api/novel?sort=rating&order=desc
GET /api/novel?sort=word_count&order=desc
GET /api/novel?sort=date&date_type=发布&order=desc
GET /api/novel?year_month=202405&date_type=发布
GET /api/novel?year_list=发布
GET /api/novel?badge_id=1
GET /api/novel?fields=id,title,pen_name
GET /api/novel?exclude=summary
GET /api/novel?user_id=123&fields=note
GET /api/novel?readed_user=三体&page=1&limit=10
GET /api/novel?title=三体&fields=all_notes
id
或 title
参数时,返回单个小说的完整详情,包含标签和徽章信息。is_public=true
)。sort
参数支持多种排序方式,配合 order
控制升降序。year_month
格式为 YYYYMM,如 202405 表示2024年5月。guest
和 guest_title
用于推荐相似小说。fields
和 exclude
可以精确控制返回的字段。user_id
配合 fields=note
可以获取用户的读书笔记。获取网站基本信息,包括统计数据和首页标题信息。
请求方式 | GET /api/info |
---|
无需参数
字段 | 类型 | 说明 |
---|---|---|
novel_count | int | 小说总数 |
author_count | int | 作家总数 |
home_main_title | string | 首页主标题 |
home_sub_title | string | 首页副标题 |
GET /api/info
返回:
{
"novel_count": 1234,
"author_count": 567,
"home_main_title": "网文数据库",
"home_sub_title": "在Zuo,连接志同道合的读者"
}
获取金币交易记录、金币排行榜。需登录。
请求方式 | GET /api/coin |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
page | int | 否 | 页码,默认1 |
page_size | int | 否 | 每页数量,默认20,最大100 |
all | int | 否 | 1为查询所有用户的金币记录(需有权限),否则只查当前用户 |
top | int | 否 | 1为返回金币排行榜(分页),否则返回金币记录 |
字段 | 类型 | 说明 |
---|---|---|
records | array | 金币交易记录数组(非排行榜模式) |
rankings | array | 金币排行榜数组(排行榜模式) |
total | int | 总记录数 |
page | int | 当前页码 |
total_pages | int | 总页数 |
字段 | 类型 | 说明 |
---|---|---|
id | int | 记录ID |
user_id | int | 用户ID |
username | string | 用户名 |
amount | int | 变动金额(正为收入,负为支出) |
type | string | 变动类型(如signin、game_reward等) |
description | string | 描述 |
related_id | object | 关联ID(如游戏/导出等) |
created_at | string | 创建时间(ISO8601) |
字段 | 类型 | 说明 |
---|---|---|
user_id | int | 用户ID |
username | string | 用户名 |
avatar_path | string | 头像URL(如为空请用 /api/avatar?size=28&seed=用户名 兜底) |
coin_balance | int | 金币余额 |
rank | int | 排名 |
GET /api/coin?page=1&page_size=20
GET /api/coin?all=1&page=1&page_size=20
GET /api/coin?top=1&page=1&page_size=9
{
"page": 1,
"total": 454,
"total_pages": 51,
"rankings": [
{"user_id":1,"username":"dianso","avatar_path":"/data/user/1/avatar.svg","coin_balance":27672,"rank":1},
{"user_id":416,"username":"白夜染心","avatar_path":"/data/user/416/avatar_1748186248394.png","coin_balance":5772,"rank":2},
{"user_id":202,"username":"呵呵","avatar_path":"","coin_balance":1704,"rank":4}
]
}
获取徽章信息。支持获取所有徽章列表或按名称查询单个徽章。
请求方式 | GET /api/badges |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
name | string | 否 | 徽章名称,用于查询单个徽章(支持精确匹配和模糊匹配) |
获取所有徽章时返回数组,按名称查询时返回单个对象
字段 | 类型 | 说明 |
---|---|---|
id | int | 徽章ID |
name | string | 徽章名称 |
color | string | 徽章颜色(HEX) |
text_color | string | 徽章文字颜色(HEX) |
description | string | 徽章描述 |
logo | string | 徽章图片URL |
count | int | 获得该徽章的作品数量 |
获取所有徽章:
GET /api/badges
返回:
[
{
"id": 1,
"name": "精品作品",
"color": "#FFD700",
"text_color": "#000000",
"description": "获得精品作品称号的小说",
"logo": "/static/img/badges/gold.png",
"count": 12
},
{
"id": 2,
"name": "月票冠军",
"color": "#00BFFF",
"text_color": "#ffffff",
"description": "月票排行第一的作品",
"logo": "/static/img/badges/champion.png",
"count": 5
}
]
按名称查询单个徽章:
GET /api/badges?name=精品作品
返回:
{
"id": 1,
"name": "精品作品",
"color": "#FFD700",
"text_color": "#000000",
"description": "获得精品作品称号的小说",
"logo": "/static/img/badges/gold.png",
"count": 12
}
书单相关API,支持书单的增删改查、书单内小说的管理等操作。
/api/booklist
获取公开书单列表/api/booklist/{id}
获取单个书单详情及其小说/api/booklist
新建书单(需登录)/api/booklist
编辑书单(需登录)/api/booklist
删除书单(需登录)/api/booklist/{id}/novel
向书单添加小说/api/booklist/{id}/novel/{novel_id}
修改书单中小说评语/api/booklist/{id}/novel/{novel_id}
移除书单中的小说获取书单列表,支持三种场景:
GET /api/booklist?page=1&page_size=10
GET /api/booklist?user_id=me&page=1&page_size=10
(需登录)GET /api/booklist?user_id={id}&page=1&page_size=10
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
user_id | int/me | 否 | 不传为全站公开,me为自己,数字为指定用户 |
page | int | 否 | 页码,默认1 |
page_size | int | 否 | 每页数量,默认10 |
字段 | 类型 | 说明 |
---|---|---|
list | array | 书单数组 |
total | int | 总数 |
page | int | 当前页码 |
page_size | int | 每页数量 |
GET /api/booklist?user_id=me&page=1&page_size=5
返回:
{
"list": [
{
"id": 1,
"user_id": 2,
"title": "我的科幻书单",
"description": "收录喜欢的科幻小说",
"is_public": true,
"created_at": "2024-06-01T12:00:00Z",
"updated_at": "2024-06-10T12:00:00Z",
"username": "张三"
}
],
"total": 1,
"page": 1,
"page_size": 5
}
获取用户列表,支持分页、角色筛选、模糊搜索,返回总数和各角色数量。适用于前端用户列表、管理后台等场景。
请求方式 | GET /api/user |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
page | int | 否 | 页码,默认1 |
page_size | int | 否 | 每页数量,默认20,最大100 |
role | int | 否 | 用户角色(1=用户,2=贡献者,0=管理员,9=小黑屋) |
keyword | string | 否 | 用户名模糊搜索 |
字段 | 类型 | 说明 |
---|---|---|
users | array | 用户简要信息数组 |
total | int | 总用户数(符合筛选条件) |
page | int | 当前页码 |
page_size | int | 每页数量 |
role_counts | object | 各角色用户数量,如{"":123, "1":100, "2":10, "0":5, "9":8} |
字段 | 类型 | 说明 |
---|---|---|
id | int | 用户ID |
username | string | 用户名 |
role | int | 用户角色(0:管理员 1:普通用户 2:贡献者 9:黑名单) |
avatar | string | 头像URL |
created_at | string | 注册时间(YYYY-MM-DD) |
coin_balance | int | 金币余额 |
string | 邮箱地址 | |
show_email | int | 是否公开邮箱(0:不公开 1:公开) |
website | string | 个人网站 |
show_website | int | 是否公开网站(0:不公开 1:公开) |
gender | string | 性别 |
bio | string | 个人简介 |
following_count | int | 关注数 |
followers_count | int | 粉丝数 |
last_active_time | string | 最后活跃时间 |
register_days | int | 注册天数 |
blacklist_record | object | 黑名单记录(仅当用户被封禁时返回) |
{
"users": [
{"id": 1, "username": "admin", "role": 0, "avatar": "/api/avatar?name=admin", "created_at": "2023-01-01"},
{"id": 2, "username": "user1", "role": 1, "avatar": "/api/avatar?name=user1", "created_at": "2023-01-02"}
],
"total": 123,
"page": 1,
"page_size": 20,
"role_counts": {"": 123, "1": 100, "2": 10, "0": 5, "9": 8}
}
""
为全部,"1"
为普通用户,"2"
为贡献者,"0"
为管理员,"9"
为小黑屋用户。/api/avatar?name=用户名
生成默认头像。GET /api/user?page=1&page_size=20
GET /api/user?role=1&keyword=张三
GET /api/user?id=123
切换当前登录用户的身份(普通用户/贡献者)。需登录。
请求方式 | GET /api/user/role?role=1|2 |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
role | int | 是 | 目标身份,1=普通用户,2=贡献者 |
GET /api/user/role?role=2
# 切换为贡献者
GET /api/user/role?role=1
# 切换为普通用户
用户之间的关注、打赏、查看粉丝/关注列表等交互功能。
/api/user/follow
关注指定用户
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
user_id | int | 是 | 要关注的用户ID |
字段 | 类型 | 说明 |
---|---|---|
success | boolean | 操作是否成功 |
message | string | 成功消息 |
error | string | 错误信息(失败时) |
/api/user/unfollow
取消关注指定用户
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
user_id | int | 是 | 要取消关注的用户ID |
字段 | 类型 | 说明 |
---|---|---|
success | boolean | 操作是否成功 |
message | string | 成功消息 |
error | string | 错误信息(失败时) |
/api/user/follow-status
检查当前用户是否关注了指定用户
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
target_id | int | 是 | 目标用户ID |
字段 | 类型 | 说明 |
---|---|---|
is_following | boolean | 是否已关注 |
error | string | 错误信息(失败时) |
/api/user/tip
向指定用户打赏金币
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
user_id | int | 是 | 被打赏用户ID |
amount | int | 是 | 打赏金额(1-10000) |
message | string | 否 | 打赏留言 |
字段 | 类型 | 说明 |
---|---|---|
success | boolean | 操作是否成功 |
message | string | 成功消息 |
amount | int | 实际打赏金额 |
error | string | 错误信息(失败时) |
/api/user/followers
获取指定用户的粉丝列表(支持分页)
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
user_id | int | 是 | 目标用户ID |
page | int | 否 | 页码,默认1 |
limit | int | 否 | 每页数量,默认20,最大50 |
字段 | 类型 | 说明 |
---|---|---|
users | array | 用户列表 |
total | int | 总数量 |
page | int | 当前页码 |
limit | int | 每页数量 |
total_pages | int | 总页数 |
has_more | boolean | 是否有更多数据 |
/api/user/following
获取指定用户的关注列表(支持分页)
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
user_id | int | 是 | 目标用户ID |
page | int | 否 | 页码,默认1 |
limit | int | 否 | 每页数量,默认20,最大50 |
字段 | 类型 | 说明 |
---|---|---|
users | array | 用户列表 |
total | int | 总数量 |
page | int | 当前页码 |
limit | int | 每页数量 |
total_pages | int | 总页数 |
has_more | boolean | 是否有更多数据 |
用户每日签到接口,支持获取签到信息和执行签到操作。
请求方式 | GET /api/signin POST /api/signin |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
user_id | int | 否 | 查询指定用户的签到信息(所有人可查) |
字段 | 类型 | 说明 |
---|---|---|
success | bool | 操作是否成功 |
message | string | 提示信息 |
stats | object | 签到统计信息(GET) |
daily | object | 每日签到统计(GET) |
rankings | array | 签到排行榜(GET) |
total_users | int | 总用户数(GET) |
has_signed_today | bool | 今日是否已签到(GET) |
level_days | array | 等级天数配置(GET) |
announcement | string | 签到公告(GET) |
today_signers | array | 今日已签到用户(GET) |
reward | int | 签到获得的金币(POST) |
total_days | int | 累计签到天数(POST) |
level | int | 当前等级(POST) |
GET /api/signin
返回:
{
"success": true,
"stats": { "TotalSignins": 12, "Level": 2, ... },
"daily": { "TodaySignins": 5, ... },
"rankings": [ ... ],
"total_users": 123,
"has_signed_today": true,
"level_days": [0,10,30,...],
"announcement": "每日签到送金币!",
"today_signers": [ { "user_id": 1, "username": "张三" } ]
}
POST /api/signin
返回:
{
"success": true,
"message": "签到成功,获得金币!",
"reward": 8,
"total_days": 12,
"level": 2
}
获取历史上的今天发布或完结的小说,支持分页和类型筛选。
请求方式 | GET /api/history |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 否 | 类型,published (默认,今日发布)或 finished (今日完结) |
month | int | 否 | 月份,默认当前月 |
day | int | 否 | 日期,默认当天 |
page | int | 否 | 页码,默认1 |
page_size | int | 否 | 每页数量,默认20 |
字段 | 类型 | 说明 |
---|---|---|
id | int | 小说ID |
title | string | 书名 |
alias | string | 别名 |
author_id | int | 作者ID |
pen_name | string | 作者笔名 |
genre | string | 类型 |
word_count | int | 字数 |
status | string | 状态(连载/完结) |
publish_date | string | 发布日期 |
complete_date | string | 完结日期 |
summary | string | 简介 |
first_order | int | 首订 |
average_sub | int | 均订 |
max_sub | int | 高订 |
achievements | int | 盟主数 |
original_site | string | 首发站点 |
read_link | string | 试读链接 |
avg_rating | float | 平均评分 |
rating_count | int | 评分人数 |
is_public | bool | 是否公开 |
cover | string | 封面 |
created_at | string | 创建时间 |
updated_at | string | 更新时间 |
GET /api/history?type=published&page=1&page_size=2
返回:
{
"total": 100,
"novels": [
{
"id": 1,
"title": "三体",
"alias": "",
"author_id": 10,
"pen_name": "刘慈欣",
"genre": "科幻",
"word_count": 300000,
"status": "完结",
"publish_date": "2008-01-01",
"complete_date": "2010-01-01",
"summary": "地球往事三部曲之一。",
"first_order": 1000,
"average_sub": 800,
"max_sub": 1200,
"achievements": 50,
"original_site": "起点中文网",
"read_link": "https://www.qidian.com/book/1",
"avg_rating": 9.5,
"rating_count": 10000,
"is_public": true,
"cover": "/covers/1.jpg",
"created_at": "2008-01-01T00:00:00Z",
"updated_at": "2010-01-01T00:00:00Z"
}
]
}
生成动物风格头像,支持多种参数和动物类型。
请求方式 | GET /api/avatar |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
size | int | 否 | 头像尺寸,默认200,范围50-500 |
seed | int/string | 否 | 随机种子,相同种子生成相同头像 |
style | string | 否 | 头像风格,animal=动物头像(默认) |
animal | string | 否 | 指定动物类型,支持:cat 猫、dog 狗、rabbit 兔子、bear 熊、fox 狐狸、tiger 老虎、lion 狮子、monkey 猴子、pig 猪、panda 熊猫、frog 青蛙、chick 小鸡、duck 鸭子、cow 奶牛、sheep 羊、squirrel 松鼠、koala 考拉、hippo 河马、giraffe 长颈鹿、penguin 企鹅、horse 马、deer 鹿、elephant 大象、wolf 狼、mouse 老鼠、owl 猫头鹰、camel 骆驼、crocodile 鳄鱼、zebra 斑马、goat 山羊、hedgehog 刺猬、raccoon 浣熊、whale 鲸鱼、dolphin 海豚、shark 鲨鱼、eagle 鹰、parrot 鹦鹉、turtle 乌龟、snake 蛇、bat 蝙蝠
|
bear
cow
cat
panda
GET /api/avatar?size=200&seed=1&style=animal&animal=bear
综合搜索作家与作品,支持关键词、分页等参数。
注意:未登录用户只能搜索到公开作品,已登录用户可搜索到所有作品(包括非公开)。
请求方式 | GET /api/search |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
keyword | string | 是 | 搜索关键词 |
author_page | int | 否 | 作家结果页码,默认1 |
novel_page | int | 否 | 小说结果页码,默认1 |
字段 | 类型 | 说明 |
---|---|---|
keyword | string | 搜索关键词 |
authors | array | 作家搜索结果数组 |
novels | array | 小说搜索结果数组 |
author_total | int | 作家结果总数 |
novel_total | int | 小说结果总数 |
author_page | int | 当前作家页码 |
novel_page | int | 当前小说页码 |
字段 | 类型 | 说明 |
---|---|---|
id | int | 作家ID |
pen_name | string | 笔名 |
avatar | object | 头像对象 |
字段 | 类型 | 说明 |
---|---|---|
id | int | 小说ID |
title | string | 书名 |
pen_name | string | 作者笔名 |
cover | object | 封面对象 |
avg_rating | float | 平均评分 |
GET /api/search?keyword=科幻&author_page=1&novel_page=1
返回:
{
"keyword": "科幻",
"authors": [
{
"id": 1,
"pen_name": "刘慈欣",
"avatar": {"String": "/avatar/liucixin.jpg", "Valid": true}
}
],
"novels": [
{
"id": 1,
"title": "三体",
"pen_name": "刘慈欣",
"cover": {"String": "/cover/3body.jpg", "Valid": true},
"avg_rating": 9.2
}
],
"author_total": 5,
"novel_total": 23,
"author_page": 1,
"novel_page": 1
}
GET /api/search?keyword=科幻
GET /api/search?keyword=刘慈欣&author_page=1&novel_page=2
获取热门内容,包括热门小说、热门作家、热门标签等。
请求方式 | GET /api/hot |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 否 | 热门类型:novels (小说,默认)、authors (作家)、tags (标签) |
limit | int | 否 | 返回数量,默认10,最大50 |
period | string | 否 | 时间周期:day (日)、week (周,默认)、month (月)、all (全部) |
字段 | 类型 | 说明 |
---|---|---|
type | string | 热门类型 |
period | string | 时间周期 |
data | array | 热门数据数组 |
updated_at | string | 数据更新时间 |
字段 | 类型 | 说明 |
---|---|---|
id | int | 小说ID |
title | string | 书名 |
pen_name | string | 作者笔名 |
cover | object | 封面对象 |
avg_rating | float | 平均评分 |
read_count | int | 阅读人数 |
hot_score | float | 热度分数 |
字段 | 类型 | 说明 |
---|---|---|
id | int | 作家ID |
pen_name | string | 笔名 |
avatar | object | 头像对象 |
novel_count | int | 作品数量 |
total_reads | int | 总阅读人数 |
hot_score | float | 热度分数 |
GET /api/hot?type=novels&limit=5&period=week
返回:
{
"type": "novels",
"period": "week",
"updated_at": "2024-06-07T12:00:00Z",
"data": [
{
"id": 1,
"title": "三体",
"pen_name": "刘慈欣",
"cover": {"String": "/cover/3body.jpg", "Valid": true},
"avg_rating": 9.2,
"read_count": 1234,
"hot_score": 95.8
},
{
"id": 2,
"title": "流浪地球",
"pen_name": "刘慈欣",
"cover": {"String": "/cover/wandering.jpg", "Valid": true},
"avg_rating": 8.9,
"read_count": 987,
"hot_score": 89.3
}
]
}
获取网站统计数据,包括作品数量、作家数量、用户数量等。
请求方式 | GET /api/stats |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 否 | 统计类型:overview (概览,默认)、growth (增长趋势)、distribution (分布统计) |
period | string | 否 | 时间周期:day (日)、week (周)、month (月,默认)、year (年) |
字段 | 类型 | 说明 |
---|---|---|
total_novels | int | 小说总数 |
total_authors | int | 作家总数 |
total_users | int | 用户总数 |
total_tags | int | 标签总数 |
total_reads | int | 总阅读人次 |
total_ratings | int | 总评分数 |
avg_rating | float | 平均评分 |
total_words | int | 总字数 |
updated_at | string | 统计更新时间 |
字段 | 类型 | 说明 |
---|---|---|
period | string | 时间周期 |
data | array | 时间序列数据 |
growth_rate | object | 增长率统计 |
字段 | 类型 | 说明 |
---|---|---|
genre_distribution | array | 题材分布 |
status_distribution | array | 状态分布 |
word_count_distribution | array | 字数分布 |
rating_distribution | array | 评分分布 |
GET /api/stats?type=overview
返回:
{
"total_novels": 1234,
"total_authors": 567,
"total_users": 8901,
"total_tags": 89,
"total_reads": 45678,
"total_ratings": 12345,
"avg_rating": 8.2,
"total_words": 123456789,
"updated_at": "2024-06-07T12:00:00Z"
}
GET /api/stats?type=distribution
返回:
{
"genre_distribution": [
{"name": "科幻", "count": 234, "percentage": 18.9},
{"name": "玄幻", "count": 189, "percentage": 15.3},
{"name": "都市", "count": 156, "percentage": 12.6}
],
"status_distribution": [
{"name": "已完结", "count": 789, "percentage": 63.9},
{"name": "连载中", "count": 345, "percentage": 27.9},
{"name": "暂停", "count": 100, "percentage": 8.1}
],
"word_count_distribution": [
{"range": "0-10万", "count": 456, "percentage": 36.9},
{"range": "10-50万", "count": 567, "percentage": 45.9},
{"range": "50万+", "count": 211, "percentage": 17.1}
]
}
数据导出接口,支持导出小说、作家、标签等数据为多种格式。需登录且消耗金币。
请求方式 | POST /api/export |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 导出类型:novels (小说)、authors (作家)、tags (标签)、booklist (书单) |
format | string | 是 | 导出格式:json 、csv 、excel |
filters | object | 否 | 筛选条件,JSON对象 |
fields | array | 否 | 指定导出字段,不传则导出所有字段 |
limit | int | 否 | 导出数量限制,默认1000,最大10000 |
{
"genre": "科幻", // 题材筛选
"status": "已完结", // 状态筛选
"word_count_min": 100000, // 最小字数
"word_count_max": 500000, // 最大字数
"rating_min": 8.0, // 最小评分
"author_id": 123, // 指定作家
"tag_ids": [1, 2, 3], // 指定标签ID
"publish_year": 2023 // 发布年份
}
字段 | 类型 | 说明 |
---|---|---|
success | bool | 导出是否成功 |
message | string | 提示信息 |
download_url | string | 下载链接(成功时) |
file_size | int | 文件大小(字节) |
record_count | int | 导出记录数 |
cost | int | 消耗金币数 |
expires_at | string | 下载链接过期时间 |
导出类型 | 基础费用 | 每1000条记录 | 格式加成 |
---|---|---|---|
小说 | 10金币 | +5金币 | Excel: +50% |
作家 | 5金币 | +2金币 | Excel: +50% |
标签 | 2金币 | +1金币 | Excel: +50% |
书单 | 3金币 | +1金币 | Excel: +50% |
POST /api/export
Content-Type: application/json
{
"type": "novels",
"format": "json",
"filters": {
"genre": "科幻",
"status": "已完结",
"rating_min": 8.0
},
"fields": ["id", "title", "pen_name", "word_count", "avg_rating"],
"limit": 500
}
返回:
{
"success": true,
"message": "导出成功",
"download_url": "/downloads/export_novels_20240607_123456.json",
"file_size": 1048576,
"record_count": 234,
"cost": 15,
"expires_at": "2024-06-08T12:00:00Z"
}
获取服务器系统信息,包括操作系统版本、Go版本、内存占用等运行状态信息。需要API Token。
请求方式 | GET /api/system?token=YOUR_TOKEN |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
token | string | 是 | API访问令牌 |
字段 | 类型 | 说明 |
---|---|---|
os | string | 操作系统类型(如 linux、windows、darwin) |
arch | string | 系统架构(如 amd64、arm64) |
go_version | string | Go语言版本 |
num_cpu | int | CPU核心数 |
num_goroutine | int | 当前协程数量 |
memory_usage | object | 内存使用详情 |
uptime | string | 服务运行时间 |
timestamp | int | 当前时间戳 |
字段 | 类型 | 说明 |
---|---|---|
alloc | int | 当前分配的内存(字节) |
total_alloc | int | 累计分配的内存(字节) |
sys | int | 从操作系统获取的总内存(字节) |
GET /api/system?token=YOUR_TOKEN
返回:
{
"os": "windows",
"arch": "amd64",
"go_version": "go1.24.5",
"num_cpu": 4,
"num_goroutine": 21,
"memory_usage": {
"alloc": 4208912,
"total_alloc": 11636248,
"sys": 16928768
},
"uptime": "45秒",
"timestamp": 1753859851
}
其他实用的API接口,包括头像生成、小说验证等。
请求方式 | GET /api/avatar |
---|
生成随机SVG头像,支持自定义大小和种子。
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
size | int | 否 | 头像大小(像素),默认64,范围16-512 |
seed | int | 否 | 随机种子,相同种子生成相同头像 |
请求方式 | POST /api/validate/novel |
---|
批量验证小说标题是否存在于数据库中。
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
titles | array | 是 | 要验证的小说标题数组 |
GET /api/avatar?size=128&seed=12345
返回:SVG格式的头像图片
POST /api/validate/novel
Content-Type: application/json
{
"titles": ["三体", "流浪地球", "不存在的小说"]
}
返回:
{
"results": [
{
"title": "三体",
"exists": true,
"id": 1,
"penName": "刘慈欣",
"authorId": 10
},
{
"title": "流浪地球",
"exists": true,
"id": 2,
"penName": "刘慈欣",
"authorId": 10
},
{
"title": "不存在的小说",
"exists": false
}
]
}