📝 docs(readme): 同步近期改动并修正过时内容
- 补充 /healthz、protect_all 配置、错误响应规范(400/500/401)、缓存机制表 - 修正接口参数名与代码不符处:content 实为 item_id、multi-content 需 book_id、media 系列为 item_ids 等 - /vacuum 修正为 POST;技术栈删除已移除的 Gin,改为标准库 net/http
This commit is contained in:
1 parent
586b714f3c
commit
bb0cc39950
1 file changed
+32
-18
@@ -34,9 +34,11 @@ Go 语言实现的番茄小说非官方 API 服务,完整实现了签名算法
|
||||
|
||||
- **签名算法** - Gorgon、8404、Argus、Ladon、Khronos
|
||||
- **设备密钥池** - 多设备轮换、自动补充
|
||||
- **SQLite 缓存** - 本地缓存、过期清理、数据库压缩;支持切换 PostgreSQL 与 Redis
|
||||
- **多级缓存** - 正文/详情/目录等 24 小时缓存,搜索/分类短缓存;存储后端可选 SQLite / PostgreSQL / Redis
|
||||
- **配置热更新** - 修改配置无需重启
|
||||
- **访问控制** - 支持 AccessKey 验证
|
||||
- **访问控制** - AccessKey 验证(常量时间比较防时序攻击),可扩展保护全部业务接口
|
||||
- **优雅退出** - 超时保护、信号驱动的平滑关闭
|
||||
- **错误规范** - 统一 JSON 错误响应,缺参 400 / 服务端错误 500
|
||||
|
||||
## 项目结构
|
||||
|
||||
@@ -134,36 +136,37 @@ go run ./cmd/fanqie
|
||||
| 接口 | 方法 | 说明 |
|
||||
| ------ | ------ | ------ |
|
||||
| `GET /` | GET | 服务首页 |
|
||||
| `GET /healthz` | GET | 存活探针(不校验密钥,供容器/反代使用) |
|
||||
| `GET /status` | GET | 服务状态(需 AccessKey) |
|
||||
| `GET /self-info` | GET | 自我信息(需 AccessKey) |
|
||||
| `GET /vacuum` | GET | 数据库压缩(需 AccessKey) |
|
||||
| `POST /vacuum` | POST | 数据库压缩(需 AccessKey) |
|
||||
|
||||
### 书籍相关
|
||||
|
||||
| 接口 | 方法 | 说明 | 参数 |
|
||||
| ------ | ------ | ------ | ------ |
|
||||
| `/search` | GET | 搜索书籍 | `keyword`, `tab_type`, `offset` |
|
||||
| `/search` | GET | 搜索书籍 | `query`(或 `key`), `tab_type`, `offset` |
|
||||
| `/detail` | GET | 书籍详情 | `book_id` |
|
||||
| `/info` | GET | 书籍详情(同 detail) | `book_id` |
|
||||
| `/catalog` | GET | 章节目录 | `book_id` |
|
||||
| `/directory/all_items` | GET | 章节目录(同 catalog) | `book_id` |
|
||||
| `/multi-detail` | GET | 批量书籍详情 | `book_ids`(逗号分隔) |
|
||||
| `/multi-detail` | GET | 批量书籍详情 | `book_id`(逗号分隔) |
|
||||
|
||||
### 内容相关
|
||||
|
||||
| 接口 | 方法 | 说明 | 参数 |
|
||||
| ------ | ------ | ------ | ------ |
|
||||
| `/content` | GET | 章节内容 | `chapter_id`, `book_id` |
|
||||
| `/multi-content` | GET | 批量章节内容 | `chapter_ids`(逗号分隔) |
|
||||
| `/item-summary` | GET | 章节摘要 | `book_id`, `chapter_id` |
|
||||
| `/content` | GET | 章节内容 | `item_id` |
|
||||
| `/multi-content` | GET | 批量章节内容 | `book_id`, `item_ids`(逗号分隔) |
|
||||
| `/item-summary` | GET | 章节摘要 | `book_id`, `item_ids`(逗号分隔) |
|
||||
|
||||
### 评论相关
|
||||
|
||||
| 接口 | 方法 | 说明 | 参数 |
|
||||
| ------ | ------ | ------ | ------ |
|
||||
| `/chapter_review` | GET | 章节评论 | `book_id`, `chapter_id` |
|
||||
| `/review` | GET | 书评列表 | `book_id`, `offset`, `limit` |
|
||||
| `/review_html` | GET | 评论 HTML | `book_id`, `chapter_id` |
|
||||
| `/chapter_review` | GET | 章节评论 | `book_id`, `item_id` |
|
||||
| `/review` | GET | 书评列表 | `book_id`, `item_id`, `para`, `comment_id`, `offset`, `limit` |
|
||||
| `/review_html` | GET | 评论 HTML | `book_id`, `item_id`, `para` |
|
||||
|
||||
### 分类相关
|
||||
|
||||
@@ -176,9 +179,9 @@ go run ./cmd/fanqie
|
||||
|
||||
| 接口 | 方法 | 说明 | 参数 |
|
||||
| ------ | ------ | ------ | ------ |
|
||||
| `/audio` | GET | 音频内容 | `audio_id`, `tone_id` |
|
||||
| `/video` | GET | 视频内容 | `video_id` |
|
||||
| `/manga` | GET | 漫画内容 | `manga_id`, `chapter_id` |
|
||||
| `/audio` | GET | 音频内容 | `item_ids`, `tone_id`, `output` |
|
||||
| `/video` | GET | 视频内容 | `item_ids` |
|
||||
| `/manga` | GET | 漫画内容 | `item_ids`(或 `item_id`), `show_html`, `output` |
|
||||
| `/manga/image/{itemID}/{index}` | GET | 漫画图片 | 路径参数 |
|
||||
|
||||
## 内容获取示例
|
||||
@@ -235,6 +238,7 @@ server:
|
||||
host: "0.0.0.0" # 监听地址
|
||||
port: "40180" # 监听端口
|
||||
access_key: "" # 访问密钥(可选)
|
||||
protect_all: false # 业务接口也要求访问密钥(公网部署建议开启)
|
||||
|
||||
# 番茄小说配置
|
||||
fanqie:
|
||||
@@ -324,6 +328,7 @@ cp .env.example .env
|
||||
| `server.host` | HTTP 服务监听地址 | `0.0.0.0` |
|
||||
| `server.port` | HTTP 服务监听端口 | `40180` |
|
||||
| `server.access_key` | 访问密钥,设为空则不验证 | - |
|
||||
| `server.protect_all` | 业务接口是否也要求访问密钥 | `false` |
|
||||
| `fanqie.algorithm` | 签名算法 `gorgon` / `8404` | `gorgon` |
|
||||
| `fanqie.signature` | 签名方法 `sign2` / `sign4` | `sign4` |
|
||||
| `fanqie.content.*` | 正文内容处理选项 | 见上文 |
|
||||
@@ -377,15 +382,24 @@ cp .env.example .env
|
||||
|
||||
## 缓存机制
|
||||
|
||||
- **SQLite 本地缓存** - 缓存书籍内容和章节数据
|
||||
- **自动清理** - 定期清理过期缓存
|
||||
- **接口缓存** - 命中直接返回,不打上游(Redis 启用时优先走 Redis)
|
||||
- **自动清理** - 定期清理过期缓存(Redis 由 TTL 自动过期)
|
||||
- **数据库压缩** - 支持 VACUUM 操作优化数据库
|
||||
|
||||
| 接口 | 缓存时长 |
|
||||
| ------ | ------ |
|
||||
| `/content` | 24 小时 |
|
||||
| `/detail`、`/info`、`/catalog`、`/multi-detail`、`/item-summary` | 24 小时 |
|
||||
| `/search`、`/category-front`、`/category-landing` | 10 分钟 |
|
||||
| `/audio` 代理链接 | 2 小时(匹配 CDN 有效期) |
|
||||
|
||||
失败响应不缓存;评论类接口为动态数据,不缓存。
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **Go 1.24** - 编程语言
|
||||
- **Gin** - HTTP 框架(间接依赖)
|
||||
- **SQLite3** - 本地数据库
|
||||
- **net/http** - 标准库 HTTP 服务(超时保护 + 优雅退出)
|
||||
- **SQLite3 / PostgreSQL / Redis** - 缓存与存储
|
||||
- **Viper** - 配置管理
|
||||
- **goquery** - HTML 解析
|
||||
|
||||
|
||||
Reference in new issue
Block a user