快速调用
每个示例都可直接复制运行,并会检查 HTTP 状态和处理错误信息。
随机一条
(async () => {
try {
const response = await fetch('https://sent.andan.me/api/v1');
const body = await response.json();
if (!response.ok) {
throw new Error(`${body.code}: ${body.detail}`);
}
console.log(body.data);
} catch (error) {
console.error('读取失败', error);
}
})();按分类随机
(async () => {
try {
const response = await fetch('https://sent.andan.me/api/v1?categories=a');
const body = await response.json();
if (!response.ok) {
throw new Error(`${body.code}: ${body.detail}`);
}
console.log(body.data);
} catch (error) {
console.error('读取失败', error);
}
})();限制长度
(async () => {
try {
const response = await fetch('https://sent.andan.me/api/v1?categories=a&min_length=10&max_length=1000');
const body = await response.json();
if (!response.ok) {
throw new Error(`${body.code}: ${body.detail}`);
}
console.log(body.data);
} catch (error) {
console.error('读取失败', error);
}
})();GET /api/v1
从符合条件的已发布语句中等概率随机返回一条。每次请求独立抽取,因此可能连续返回同一句。
| 参数 | 类型 | 默认值 | 限制 |
|---|---|---|---|
categories | 逗号分隔字符串 | 全部启用分类 | 去重后最多 20 个;请使用本页分类代码 |
min_length | 十进制整数 | 0 | 闭区间 0–1000 |
max_length | 十进制整数 | 30 | 闭区间 0–1000,且必须 ≥ min_length |
分类:多个代码直接以英文逗号分隔,不加空格;重复代码会先去重。代码区分大小写。
长度:按 Unicode 码点计算。只传 min_length 时,max_length 仍为 30。
参数:未知参数、未知分类代码、同名参数重复、空值或非法编码返回 400。原始查询字符串最多 4096 字节。
结果:没有符合全部条件的语句时返回 404,不会放宽条件或改用其他分类。
返回字段
以下值仅为格式示意
{
"data": {
"uuid": "75a45fd4-4f2f-45eb-80cb-6f0a7bcdfaf2",
"content": "今天也要认真写代码。",
"category": "original",
"source": "示例来源",
"author": "",
"length": 10
},
"meta": {"dataset_version": "1289"}
}
| 字段 | 类型 | 说明 |
|---|---|---|
data.uuid | 字符串 | 语句的稳定标识 |
data.content | 字符串 | 语句正文 |
data.category | 字符串 | 分类代码 |
data.source | 字符串 | 来源,未填写时为空字符串 |
data.author | 字符串 | 作者,未填写时为空字符串 |
data.length | 整数 | 正文的 Unicode 码点数 |
meta.dataset_version | 字符串 | 本次响应使用的数据集版本 |
GET /api/v1/categories
不接受查询参数。返回所有启用分类,包括语句数为 0 的分类;先按后台排序值、再按分类代码排列。
响应中每项包含字符串 code、字符串 name 和整数 count;meta.dataset_version 与随机接口相同。
以下为响应格式示意:
{
"data": [
{"code": "original", "name": "原创", "count": 120}
],
"meta": {"dataset_version": "1289"}
}
当前启用分类
| 代码 | 名称 | 语句数 |
|---|---|---|
a | 动画 | 1465 |
b | 漫画 | 110 |
c | 游戏 | 1165 |
d | 文学 | 1944 |
e | 原创 | 1472 |
f | 网络 | 1541 |
g | 其他 | 1866 |
h | 影视 | 196 |
i | 诗词 | 753 |
j | 网易云 | 139 |
k | 哲学 | 307 |
l | 抖机灵 | 81 |
错误响应
错误使用 application/problem+json。以下内容仅为格式示意:
{
"type": "about:blank",
"title": "参数无效",
"status": 400,
"detail": "包含未知查询参数",
"request_id": "4dc0f8e4-2f41-4c61-b75f-46daaf28da9f",
"code": "invalid-parameter"
}
根据 status 和 code 判断错误;detail 可用于提示,request_id 可在反馈问题时用于排查。
| 状态 | 代码 | 含义 |
|---|---|---|
| 400 | invalid-parameter | 参数、查询编码或请求体不符合要求 |
| 403 | cors-denied | 跨域预检不被允许 |
| 404 | not-found | 没有匹配结果或路径不存在 |
| 405 | method-not-allowed | 请求方法不受支持 |
| 503 | not-ready | 服务尚无可用数据 |
通用约定
- 所有服务可控响应包含
X-Request-ID;业务接口返回Cache-Control: no-store。 GET成功响应使用application/json。读取路由允许GET、HEAD、OPTIONS;GET和HEAD不接受请求体。HEAD执行相同校验但不返回响应体;普通OPTIONS返回 204 和Allow。- 公开 API 可直接跨域请求,无需凭据。设置
CORS_ALLOWED_ORIGINS后可限制来源;预检仅接受GET、HEAD及请求头Accept、Content-Type。