从一句 Hello,
开始新的可能。
把一份小小的快乐,接进你的下一个作品。
第一次调用
接口入口是当前站点的 /api/v1,无需账号或 API Key。当前是开发预览,正式公共域名尚未切换。
const response = await fetch('/api/v1/hitokoto');
const result = await response.json();
if (!response.ok) throw new Error(result.error.message);
console.log(result.data.text);在其他程序调用时加上站点地址。本机预览示例:
curl 'http://127.0.0.1:3018/api/v1/answerbook'在调试器里试一下 读取响应
默认返回 JSON:文字在 data.text,图片链接在 data.url。一言保留原始数字 ID、分类、出处与作者;分页结果提供 items 和 pagination。
{
"data": {
"id": 1,
"uuid": "9818ecda-9cbf-4f2a-9af8-8136ef39cfcd",
"text": "与众不同的生活方式很累人呢,因为找不到借口。",
"category": "a",
"source": "幸运星",
"author": null
},
"meta": {
"apiVersion": "1",
"dataVersion": "2169e848bd430b57"
}
}文本接口支持 format=txt。两类 Emoji 支持 format=image,返回 307 跳转到 Google 图片地址;在 cURL 中使用 -L 跟随跳转。错误始终是 JSON。
匿名跨域调用允许 GET、HEAD 与 OPTIONS,不携带 Cookie。随机结果不缓存;固定查询可在浏览器缓存 60 秒、CDN 缓存 1 小时。响应头 X-Data-Version 标识数据版本,X-Request-Id 用于定位单次请求。
图片索引查询成功并不保证外部图片可访问。浏览器无法跨域获取图片字节时,可使用图片链接或直接打开请求地址。动态 Emoji 预览需要手动播放。
接口目录
完整参数、默认值与响应结构来自同一份接口定义:OpenAPI 3.1
| 接口 | 路径 | 查询参数 |
|---|---|---|
| 随机一言 | /api/v1/hitokoto | category / format |
| 答案之书 | /api/v1/answerbook | format |
| 疯狂星期四 | /api/v1/crazythursday | format |
| 颜文字 | /api/v1/emoticon | format |
| 发疯文学 | /api/v1/fafeng | target / format |
| 今日运势 | /api/v1/jrys | luck / format |
| Emoji 合成 | /api/v1/emoji | left / right / format |
| 动态 Emoji | /api/v1/dynamic-emoji | emoji / format |
| 假面骑士索引 | /api/v1/kamen-riders | rider / random / page / pageSize |
| 答案之书固定页 | /api/v1/answerbook/pages/{page} | 无 |
| 一言分页 | /api/v1/hitokoto/all | category / page / pageSize |
| 按原始 ID 查询一言 | /api/v1/hitokoto/{id} | format |
| 可合成 Emoji 目录 | /api/v1/emoji/catalog | q / page / pageSize |
| 动态 Emoji 目录 | /api/v1/dynamic-emoji/catalog | q / page / pageSize |
| 接口目录 | /api/v1/catalog | 无 |
| 健康检查 | /api/v1/health | 无 |
列表分页从 1 开始,每页最多 100 条,超出范围返回空列表。Emoji 接受实际表情或完整 Unicode 编码;省略合成接口的两颗表情会随机返回一组已收录的组合,仅省略一颗会报错。运势为随机抽签,不能保证同一人当天得到相同结果。
新版本不接受旧接口的 type、emoji1、emoji2 等参数。请分别改用 format、left、right;旧站仍保持原来的行为。
答案之书:固定页码
GET /api/v1/answerbook/pages/1 返回 data.id、text、page、totalPages,使用相同的 meta 与错误格式,仅支持 JSON、无查询参数。当前共 263 页,按构建数据稳定顺序编号;同一 meta.dataVersion 内,翻回同一页会得到同一答案。数据版本更新后请清空页码缓存。
页码必须为正整数;0、负数、小数或非数字返回 400 / INVALID_PAGE,超出总页数返回 404 / PAGE_NOT_FOUND。原来的 /api/v1/answerbook 仍随机返回 id 与 text,并继续支持 format=txt。
处理错误
| 状态码 | 含义 | 建议 |
|---|---|---|
| 400 | 参数无效、重复或未知 | 按详情页修改请求参数 |
| 404 | 路径、内容或组合未收录 | 检查路径或选择其他内容 |
| 405 | 方法不支持 | 改用 GET、HEAD 或 OPTIONS |
| 414 | 查询参数过长 | 缩短查询字符串 |
| 500 | 服务异常 | 稍后重试,并保留 requestId |
{
"error": {
"code": "NO_COMBINATION",
"message": "这两颗 Emoji 还没有收录组合,换一颗试试。"
},
"requestId": "本次请求标识"
}每一份灵感,都有来处。
文字、Emoji Kitchen 配方与骑士索引由旧项目的本地内容迁移,构建时校验并去重。数据更新后随站点版本发布;第一版不连接数据库,也不保存抽取历史。
合成图片由 Google Emoji Kitchen 提供。动态表情来自 Google Animated Noto Emoji,遵循 CC BY 4.0;使用时请保留归属信息。
骑士图片使用响应中的 url 直链进行展示;sourcePage 是 Kamen Rider Wiki / Fandom 的出处文件页,不是图片地址。外部图片加载失败时会显示提示,仍可尝试打开原图。历史文本与图片的具体再分发范围仍需逐项核对。
答案与运势仅供娱乐。减少动画的系统设置会生效,手机可以点击选择表情,无需拖动。