获取标签信息,支持多种参数筛选和字段定制。
请求方式 | GET /api/tags |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
hot | int | 否 | 返回最热门的前N个标签(按作品数量排序) |
random | int | 否 | 随机返回N个标签 |
fields | string | 否 | 指定返回字段,逗号分隔,如fields=name,alias |
novel_title | string | 否 | 根据作品名返回该作品的标签 |
id | int | 否 | 标签ID,返回单个标签对象 |
字段 | 类型 | 说明 |
---|---|---|
id | int | 标签ID |
name | string | 标签名称 |
alias | string | 标签别名(用于URL) |
abbr | string | 拼音首字母缩写 |
description | string | 标签描述 |
novel_count | int | 该标签下作品数量 |
GET /api/tags?id=679
返回:
{
"id": 679,
"name": "都市",
"alias": "dushi",
"abbr": "ds",
"description": "都市题材相关小说",
"novel_count": 42
}
获取作者信息,支持按ID或笔名查询。
请求方式 | GET /api/author |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
id | int | 否 | 作者ID,精确查找 |
pen_name | string | 否 | 作者笔名,精确查找 |
dead | int | 否 | 是否只返回已去世作家,1 为只返回已去世,0 为只返回在世,不传为全部 |
page | int | 否 | 页码,默认1 |
page_size | int | 否 | 每页数量,默认24 |
GET /api/author?dead=1&page=1&page_size=12
返回第1页的已去世作家,每页12个。GET /api/author?dead=0&page=2&page_size=10
返回第2页的在世作家,每页10个。GET /api/author?page=1&page_size=20
返回全部作家第1页,每页20个。
字段 | 类型 | 说明 |
---|---|---|
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 | 签约网站 |
bio | string | 个人简介 |
avatar | object | 头像对象,含 String (头像URL)和 Valid (是否有效) |
is_dead | bool | 是否已去世 |
created_at | string | 创建时间(ISO8601) |
updated_at | string | 更新时间(ISO8601) |
获取小说列表或单本详情,支持多种筛选、字段定制和分页。
请求方式 | GET /api/novel |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
id | int | 否 | 小说ID,返回单本详情,和分页参数互斥 |
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为基础,优先推荐与其标签有重叠的小说(重叠越多越优先,部分标签重叠也可推荐),不足时随机补齐,默认返回6本 |
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,筛选拥有该徽章的所有作品,支持分页和字段过滤 |
id
参数,则返回该小说的完整详情对象(含 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 | 作者笔名 |
author_alias | string | 作者马甲 |
author_realname | string | 作者本名 |
genre | string | 题材分类 |
word_count | int | 字数 |
status | string | 连载状态 |
publish_date | string | 首发日期(YYYY-MM-DD) |
complete_date | string | 完结日期(YYYY-MM-DD) |
summary | string | 简介(可用 exclude 排除) |
cover | object | 封面对象,含 String (图片URL)和 Valid |
original_site | string | 首发站点名称,如"起点中文网" |
read_link | string | 试读链接URL,若有则页面显示"试读"按钮 |
avg_rating | float | 平均评分 |
rating_count | int | 评分人数 |
is_public | bool | 是否公开 |
created_at | string | 创建时间(ISO8601) |
updated_at | string | 更新时间(ISO8601) |
badges | array | 获得的徽章(对象数组) |
tags | array | 标签(对象数组) |
first_order | int | 首订人数 |
average_sub | int | 均订(平均订阅数) |
max_sub | int | 高订(最高订阅数) |
achievements | int | 盟主/成就数字 |
note | string | 用户读书笔记(需带 user_id 且 fields 包含 note) |
{
"page": 1,
"size": 20,
"total": 123,
"novels": [
{
"id": 1,
"title": "小说名",
"cover": {"String": "/cover/xxx.jpg", "Valid": true},
"status": "连载中",
"avg_rating": 8.9,
"pen_name": "作家名",
"word_count": 123456,
"publish_date": "2020-01-01",
"first_order": 100,
"average_sub": 80,
"max_sub": 120,
"achievements": 5,
"note": "用户读书笔记内容"
// ... 其它字段 ...
}
]
}
{
"novel": {
"id": 123,
"title": "三体",
"alias": "3body",
"author_id": 1,
"pen_name": "刘慈欣",
"author_alias": "大刘",
"author_realname": "刘慈欣",
"genre": "科幻",
"word_count": 300000,
"status": "已完结",
"publish_date": "2008-01-01",
"complete_date": "2010-01-01",
"summary": "黑暗森林法则...",
"cover": {"String": "/cover/3body.jpg", "Valid": true},
"original_site": "起点中文网",
"read_link": "https://www.qidian.com/book/123",
"avg_rating": 9.2,
"rating_count": 10000,
"is_public": true,
"created_at": "2008-01-01T00:00:00Z",
"updated_at": "2024-06-07T12:00:00Z",
"badges": [ { "id": 1, "name": "金奖" } ],
"tags": [ { "id": 2, "name": "科幻" } ],
"first_order": 100,
"average_sub": 80,
"max_sub": 120,
"achievements": 5
}
}
year_list=发布
或 year_list=完结
){
"years": [2020, 2021, 2022, 2023, 2024]
}
sort=read
){
"page": 1,
"size": 20,
"total": 100,
"novels": [
{
"id": 1,
"title": "小说名",
"cover": "...",
"status": "连载中",
"pen_name": "作家名",
"read_count": 1234
}
]
}
date_type
和 year_month
搭配){
"page": 1,
"size": 20,
"total": 10,
"novels": [
{
"title": "小说名",
"publish_date": "2024-05-01",
"complete_date": "",
"status": "连载中",
"pen_name": "作家名",
"cover": "..."
}
]
}
GET /api/novel?sort=rating&order=desc&page=1&size=10&fields=title,cover,avg_rating,rating_count
GET /api/novel?sort=word_count&order=desc&page=1&size=10&fields=title,cover,word_count
GET /api/novel?sort=first_order&order=desc&page=1&size=10&fields=title,cover,first_order
GET /api/novel?sort=achievements&order=desc&page=1&size=10&fields=title,cover,achievements
GET /api/novel?sort=max_sub&order=desc&page=1&size=10&fields=title,cover,max_sub
GET /api/novel?sort=date&date_type=发布&order=desc&page=1&size=10&fields=title,cover,publish_date
GET /api/novel?sort=date&date_type=完结&order=desc&page=1&size=10&fields=title,cover,complete_date
GET /api/novel?year_list=发布
或 GET /api/novel?year_list=完结
GET /api/novel?guest=530&fields=title,cover
GET /api/novel?sort=average_sub&order=desc&page=1&size=10&fields=title,cover,average_sub
fields
和 exclude
可灵活组合,建议前端只请求所需字段,提升性能。cover
字段为对象,需取 String
属性为图片URL。badges
、tags
字段为对象数组,结构见实际返回。note
字段仅在带 user_id
且 fields
包含 note
时返回。publish_date
、complete_date
格式为 YYYY-MM-DD
,如无则为空字符串。first_order
、average_sub
、max_sub
、achievements
字段为数字,分别表示首订、均订、高订和盟主数。获取金币交易记录、金币排行榜。需登录。
请求方式 | 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}
]
}
{
"page": 1,
"total": 277,
"total_pages": 14,
"records": [
{"id":2870,"user_id":1,"username":"dianso","amount":105,"type":"signin","description":"每日签到奖励","related_id":{"Int64":0,"Valid":false},"created_at":"2025-06-29T00:20:19+08:00"}
]
}
获取所有徽章及其发放数量。
请求方式 | GET /api/badges |
---|
字段 | 类型 | 说明 |
---|---|---|
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/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 | 用户角色 |
avatar | string | 头像URL |
created_at | string | 注册时间(YYYY-MM-DD) |
{
"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
{
"id": 2,
"username": "test",
"role": 1,
"avatar": "/avatar/2.png",
"created_at": "2024-06-02"
}
切换当前登录用户的身份(普通用户/贡献者)。需登录。
请求方式 | GET /api/user/role?role=1|2 |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
role | int | 是 | 目标身份,1=普通用户,2=贡献者 |
GET /api/user/role?role=2
# 切换为贡献者
GET /api/user/role?role=1
# 切换为普通用户
用户每日签到接口,支持获取签到信息和执行签到操作。
请求方式 | 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/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
giraffe
koala
panda
mouse
rabbit
snake
GET /api/avatar?size=200&seed=1&style=animal&animal=bear
综合搜索作家与作品,支持关键词、分页等参数。
请求方式 | GET /api/search |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
keyword | string | 是 | 搜索关键词,支持作家名或作品名模糊匹配 |
author_page | int | 否 | 作家分页页码,默认1 |
novel_page | int | 否 | 作品分页页码,默认1 |
字段 | 类型 | 说明 |
---|---|---|
author_page | int | 当前作家页码 |
author_total | int | 作家总数 |
authors | array | 作家列表,见下方结构 |
novel_page | int | 当前作品页码 |
novel_total | int | 作品总数 |
novels | array | 作品列表,见下方结构 |
字段 | 类型 | 说明 |
---|---|---|
id | int | 作家ID |
pen_name | string | 笔名 |
avatar | object | 头像对象,含 String (头像URL)和 Valid |
字段 | 类型 | 说明 |
---|---|---|
id | int | 作品ID |
title | string | 书名 |
cover | object | 封面对象,含 String (图片URL)和 Valid |
status | string | 连载状态,如"连载中"或"已完结" |
pen_name | string | 作家笔名 |
GET /api/search?keyword=天地&author_page=1&novel_page=1
{
"author_page": 1,
"author_total": 0,
"authors": [],
"novel_page": 1,
"novel_total": 3,
"novels": [
{
"cover": {"String": "/data/novel/天地龙魂.avif", "Valid": true},
"id": 1509,
"pen_name": "高楼大厦",
"status": "已完结",
"title": "天地龙魂"
},
...
]
}
获取热门榜单,包括热门标签、热门作家、热门作品、热门搜索。
请求方式 | GET /api/hot |
---|
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 否 | 榜单类型,可选 tags (热门标签,默认)、author (热门作家)、novel (热门作品)、search (热门搜索) |
limit | int | 否 | 返回条数,默认10,最大100 |
字段 | 类型 | 说明 |
---|---|---|
name | string | 标签/作家/作品/搜索词名称 |
author | string | (仅热门作品)作者笔名 |
count | int | 热度(如浏览量、搜索次数等) |
GET /api/hot?type=novel&limit=3
返回:
[
{"name": "苟在初圣魔门当人材", "author": "鹤守月满池", "count": 233},
{"name": "人在无限,开始速通", "author": "小抽大象", "count": 160},
{"name": "神祇风暴", "author": "骷髅精灵", "count": 106}
]