数据库 API
14 endpoints.
获取备份 JSON
Section titled “获取备份 JSON”扫描整个数据库并以 JSON 形式返回备份。 数据库较大时建议改用 POST 版本——这个基础 GET 端点如果生成备份耗时过长可能会超时。
这份备份可以通过「备份与恢复」功能手动重新导入。
响应
200成功响应
{
"archives": [
{
"arcid": "28697b96f0ac5858be2614ed10ca47742c9522fd",
"filename": "FateGOMEMO",
"summary": null,
"tags": "parody:fate grand order, group:wadamemo, artist:wada rco, artbook, full color, super:test, date_added:1553537258",
"thumbhash": "ec2a0ca3a3da67a9390889f0910fe494241faa9a",
"title": "Fate GO MEMO"
},
{
"arcid": "d1858d5dc36925aa66be072a97817650d39de166",
"filename": "(Memes)9B789D38B0784C5FBC9D59A9F24D20F2",
"summary": null,
"tags": "",
"thumbhash": "9846bb6d62949b56545c42e88d8010446b65702e",
"title": "test title"
}
],
"categories": [
{
"archives": [],
"catid": "SET_1749925633",
"name": "english",
"search": "language:english"
}
],
"tankoubons": [
{
"archives": [
"28697b96f0ac5858be2614ed10ca47742c9522fd",
"d1858d5dc36925aa66be072a97817650d39de166"
],
"name": "sailor moon",
"tankid": "TANK_1749925516"
}
]
}请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
排入一个备份任务
Section titled “排入一个备份任务”排入一个 Minion 任务来生成备份 JSON 文件。
用返回的任务 ID 查看进度,完成后下载该文件。
响应
200已入队的任务
{
"job": 42,
"operation": "queue_backup",
"success": 1
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
从已完成的任务下载备份 JSON
Section titled “从已完成的任务下载备份 JSON”下载由已完成的备份任务生成的备份 JSON 文件。
路径参数
- jobidinteger必填
- 已完成的备份任务 ID。
查询参数
- formatstring · enum: json | file可选
- 返回的备份格式,默认
file。json会以 JSON 响应返回备份。
响应
200备份 JSON 文件
{}400任务不存在,或尚未完成
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
清理数据库:先隐藏、再移除那些文件已不在文件系统上的条目。
文件已不存在的条目在第一次清理时只做解除关联,因此不会出现在界面上——之后再跑一次清理才会删除这些已解除关联的条目。
响应
200成功响应
{
"deleted": 0,
"operation": "",
"success": 0,
"unlinked": 0
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
删除整个数据库,包括用户偏好设置。 这是个相当危险的端点,调用它可能会让你作为客户端被锁在服务端之外!
响应
200成功响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}该端点只接受网页会话(登录本站所用实例后浏览器自动携带的 cookie)。API 令牌会被服务端拒绝,因此这里不提供令牌输入框,上面的命令行也不带 Authorization 头。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
导入调用者直接上传的 LANraragi(或 LANrurugi)备份 JSON 文件——不需要实例在线
Section titled “导入调用者直接上传的 LANraragi(或 LANrurugi)备份 JSON 文件——不需要实例在线”尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。
下面这段是 handler 自己的文档注释(crates/lanrurugi-api/src/database.rs:785)的译文;原文以源码为准。
导入调用者直接上传的 LANraragi(或 LANrurugi)备份 JSON 文件——不连接任何远端 Redis 实例(原因见 lanrurugi_backup::import_legacy 自身的模块文档:官方 LANraragi Docker 镜像默认从不把它内置的 Redis 暴露到容器外)。与上面的 queue_restore 是相同的 multipart 文件上传形态,但这里刻意做成独立的 handler/解析/持久化路径,而不是 queue_restore 的一个变体——尽管两者的 JSON 形状表面相似却绝不能共用代码,原因见 import_legacy 自身的文档。
响应
200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/database.rs:44 处的 handler。
该响应没有示例数据。
该端点只接受网页会话(登录本站所用实例后浏览器自动携带的 cookie)。API 令牌会被服务端拒绝,因此这里不提供令牌输入框,上面的命令行也不带 Authorization 头。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
本实例一共执行过多少次 LANraragi 导入——前端在导入前会读它
Section titled “本实例一共执行过多少次 LANraragi 导入——前端在导入前会读它”尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。
下面这段是 handler 自己的文档注释(crates/lanrurugi-api/src/database.rs:994)的译文;原文以源码为准。
本实例一共执行过多少次 LANraragi 导入——前端在展示导入界面之前会读它,以便在第 2 次及以后的导入时给出提醒(「你之前做过这个——建议先做一次完整备份」),而不必等导入本身完成。只读,与 queue_import_legacy 自己的递增(在真实导入完成后发生)分开,与 ImportSnapshotRepository::import_count 自身的读/增分离一致。
响应
200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/database.rs:48 处的 handler。
该响应没有示例数据。
该端点只接受网页会话(登录本站所用实例后浏览器自动携带的 cookie)。API 令牌会被服务端拒绝,因此这里不提供令牌输入框,上面的命令行也不带 Authorization 头。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
导入快照的元数据列表,最新的在前(不含 document 内容)
Section titled “导入快照的元数据列表,最新的在前(不含 document 内容)”尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。
下面这段是 handler 自己的文档注释(crates/lanrurugi-api/src/database.rs:1021)的译文;原文以源码为准。
按时间倒序的元数据列表(不含 document 内容——见 ImportSnapshotRepository::list_metadata 自身的文档),供备份页面那个「时光机」式回滚点选择器使用。
响应
200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/database.rs:49 处的 handler。
该响应没有示例数据。
该端点只接受网页会话(登录本站所用实例后浏览器自动携带的 cookie)。API 令牌会被服务端拒绝,因此这里不提供令牌输入框,上面的命令行也不带 Authorization 头。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
删除导入快照
Section titled “删除导入快照”尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。
对应的 handler 是 delete_import_snapshot,位于 crates/lanrurugi-api/src/database.rs:1063。
响应
200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/database.rs:50 处的 handler。
该响应没有示例数据。
该端点只接受网页会话(登录本站所用实例后浏览器自动携带的 cookie)。API 令牌会被服务端拒绝,因此这里不提供令牌输入框,上面的命令行也不带 Authorization 头。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
把完整的 BackupDocument 内容作为可下载的 JSON 文件返回(与导入时接受的格式相同)
Section titled “把完整的 BackupDocument 内容作为可下载的 JSON 文件返回(与导入时接受的格式相同)”尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。
下面这段是 handler 自己的文档注释(crates/lanrurugi-api/src/database.rs:1041)的译文;原文以源码为准。
把完整的 BackupDocument 内容作为可下载的 JSON 文件返回——与 POST /database/restore 接受的形状相同,因此前端自己的「恢复」流程可以把这个文件原样喂回去,两端都不需要任何格式转换。
响应
200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/database.rs:50 处的 handler。
该响应没有示例数据。
该端点只接受网页会话(登录本站所用实例后浏览器自动携带的 cookie)。API 令牌会被服务端拒绝,因此这里不提供令牌输入框,上面的命令行也不带 Authorization 头。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
清除全部「新」标记
Section titled “清除全部「新」标记”清除全部档案上的「新!」标记。
响应
200成功响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。
对应的 handler 是 rebuild_index,位于 crates/lanrurugi-api/src/database.rs:702。
响应
200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/database.rs:43 处的 handler。
该响应没有示例数据。
该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
排入一个恢复任务
Section titled “排入一个恢复任务”排入一个 Minion 任务,从备份 JSON 文件恢复。
用返回的任务 ID 查看进度。
请求体
multipart/form-data
响应
200已入队的任务
{
"job": 43,
"operation": "queue_restore",
"success": 1
}400请求无效
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
获取统计信息
Section titled “获取统计信息”从数据库获取标签,并附带表示其流行度的数值。
查询参数
- minweightinteger可选
- 只想取权重不低于给定最小值的标签时传这个参数。 不传时默认为 1,即返回全部标签。
- hide_excluded_namespacesstring可选
- 设为 true 时,把服务端设置里配置的命名空间从结果中排除。默认返回全部标签。
响应
200成功响应
[
{
"namespace": "character",
"text": "jeanne alter",
"weight": 2
},
{
"namespace": "character",
"text": "xuanzang",
"weight": 2
},
{
"namespace": "parody",
"text": "fate grand order",
"weight": 3
},
{
"namespace": null,
"text": "artbook",
"weight": 3
}
]请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。