最小可运行示例:一言经典语录 API 接口参数与返回字段详解
📅 2026/7/28 7:25:37
👁️ 阅读次数
📝 编程学习
适用场景
在日常开发中,常常需要为产品增加一条随机名言、经典台词或诗词,用于启动页、控制台欢迎语、每日一句等场景。「一言·经典语录」API 正是为此设计的轻量级接口:传入可选的条件(分类、字数范围),即可从超过 370 条经过人工整理的语录库中随机获取一条,结果包含原文、出处、作者和分类标签。
典型的集成场景包括:
- 终端或内部工具的每日一言模块
- 博客侧栏的随机句子展示
- 桌面小工具的励志语录刷新
- 游戏加载画面的台词切换
接口能力边界
- 请求方法:GET
- 接口地址:
https://v1.apizero.cn/api/hitokoto - QPS 限制:20 次/秒,超限请求会返回
429 Too Many Requests - 语录池规模:当前约 370 条,覆盖 12 个分类(动漫/漫画/游戏/文学/影视/诗词/哲学/网络/其他等)
- 筛选能力:支持按分类单字母(
a~l)和字符长度范围(min_length/max_length)筛选,不传参数则全类别随机
请求参数与鉴权
Query 参数
| 参数名 | 必填 | 类型 | 说明 | 示例值 |
|---|---|---|---|---|
c | 否 | string | 分类标识,单字母 a-l,不传则全类别随机。各字母含义:a-动画 / b-漫画 / c-游戏 / d-文学 / e-原创 / f-来自网络 / g-其他 / h-影视 / i-诗词 / j-网易云 / k-哲学 / l-抖机灵 | i(诗词) |
min_length | 否 | number | 返回语录的最小字符数(包含标点) | 8 |
max_length | 否 | number | 返回语录的最大字符数 | 20 |
同时指定
min_length和max_length时,min_length必须 ≤max_length,否则服务器会返回400 Bad Request。
鉴权方式
接口通过 HTTP 请求头X-API-Key传递密钥。你需要先在 APIZero 平台上获取一个有效的 API Key,然后将其赋值给环境变量APIZERO_API_KEY,或者在代码中直接替换字符串(不推荐硬编码)。
请求头示例:
X-API-Key: your_api_key_herecurl 最小可运行示例
以下是一条完整的 GET 请求,从诗词分类(c=i)中随机返回一条字数在 8 到 20 之间的语录:
#!/bin/bash # 替换为你的真实 API Key export APIZERO_API_KEY="your_real_api_key_here" curl -sS \ -X GET \ -H "X-API-Key: $APIZERO_API_KEY" \ "https://v1.apizero.cn/api/hitokoto?c=i&min_length=8&max_length=20"如果希望什么都不筛选,直接全类别随机,可以省略c、min_length和max_length:
curl -sS \ -X GET \ -H "X-API-Key: $APIZERO_API_KEY" \ "https://v1.apizero.cn/api/hitokoto"说明:
-sS分别表示静默模式(不显示进度)和错误时显示错误信息。- 若未传入
X-API-Key,服务器会返回401 Unauthorized。
返回值解读
成功响应(HTTP 200)的Content-Type为application/json,返回体是一个 JSON 对象,结构如下:
{ "code": 0, "msg": "成功", "data": { "from": "滕王阁序", "from_who": "王勃", "hitokoto": "落霞与孤鹜齐飞,秋水共长天一色。", "id": 1234, "length": 16, "total_pool": 370, "type": "i", "type_name": "诗词" } }字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
code | number | 业务状态码,0 表示成功,非 0 表示失败 |
msg | string | 业务描述信息 |
data | object | 核心数据对象,包含以下子字段 |
data.hitokoto | string | 随机获取的语录原文(若通过min_length/max_length筛选且无匹配,则此字段可能为空字符串) |
data.from | string | 语录出处(作品名/书籍/影视名等) |
data.from_who | string | 作者/发言人 |
data.id | number | 该条语录在数据库中的唯一 ID |
data.length | number | 语录的字符数(汉字+标点) |
data.total_pool | number | 当前筛选条件下可选的语录总数(用于计算随机范围) |
data.type | string | 分类单字母 |
data.type_name | string | 分类中文名称 |
当
code不为 0 时,msg会给出错误原因(如“API Key 无效”“分类参数不合法”等),data可能为null或空对象。
常见错误与排查
| HTTP 状态码 | 可能原因 | 排查步骤 |
|---|---|---|
| 401 | 缺少X-API-Key或密钥无效 | 确认环境变量已导出且值正确;可以在请求头后加-v参数查看实际发送的 Header |
| 400 | 参数格式错误(如min_length传了字符串、字母分类不在 a-l 范围内) | 检查 Query 参数类型和取值范围 |
| 429 | 超过 QPS 20/s 的速率限制 | 增加请求间隔或使用本地缓存 |
| 5xx | 服务端临时异常 | 重试,若持续出现请联系平台支持 |
一个快速验证 API Key 是否有效的方法:
curl -sS -o /dev/null -w "%{http_code}" \ -X GET \ -H "X-API-Key: $APIZERO_API_KEY" \ "https://v1.apizero.cn/api/hitokoto"返回200表示 Key 有效,401则表示密钥错误。
工程化注意事项
- API Key 安全管理:切勿将密钥直接硬编码在源代码中。推荐使用环境变量或密钥管理服务(如 Vault、Secrets Manager),在生产环境中通过 CI/CD 注入。
- 请求重试与退避:对于偶尔的 5xx 或网络抖动,可实现指数退避重试(如间隔 1s、2s、4s 最多 3 次)。注意不要对 4xx 错误盲目重试。
- 本地缓存策略:对于非实时性场景(如每日一句),可在服务端缓存一条结果,每 24 小时刷新一次,减少对 API 的调用频次,避免被限流。
- 参数校验:在发送请求前,对
min_length和max_length做本地校验(正整数且min_length ≤ max_length),提前拦截无效请求。 - 超时设置:根据网络环境设置合理的超时时间(如 5 秒),避免请求卡死。使用
curl --connect-timeout 5 --max-time 10或在 HTTP 库中设置相应选项。 - URL 编码:如果分类字母或长度参数从用户输入获取,务必对 Query 参数进行 URL 编码,避免特殊字符破坏请求格式。
参考文档
- 一言 · 经典语录 API 官方文档:https://apizero.cn/aidocs/hitokoto
- 原始 Markdown 文档:https://apizero.cn/aidocs/hitokoto/raw.md
编程学习
技术分享
实战经验