Skip to content

API 参考

接口

GET /api/hits/:id/:resource[.format]
路径段说明
:id命名空间 / 拥有者标识,如 github
:resource计数器名称,如 tally-api
.format可选。.json(默认)或 .svg

计数器以 hits:<id>:<resource> 为键存储于 Cloudflare KV,每次请求时自动递增。


JSON 响应

请求

GET /api/hits/github/tally-api
GET /api/hits/github/tally-api.json

响应 200 OK

json
{ "count": 42 }
响应头
Content-Typeapplication/json
Cache-Controlno-cache, no-store, must-revalidate
Access-Control-Allow-Origin*

SVG 响应

请求

GET /api/hits/github/tally-api.svg
GET /api/hits/github/tally-api.svg?theme=moebooru-h

响应 200 OK — 内嵌 base64 数字图片的 SVG 图像。

响应头
Content-Typeimage/svg+xml
Cache-Controlno-cache, no-store, must-revalidate
Access-Control-Allow-Origin*

查询参数

参数类型默认值说明
themestringmoebooruSVG 计数器的视觉主题。值非法时静默降级为 moebooru

可用主题

主题格式说明
moebooruGIF动态像素艺术角色(0–9)
moebooru-hPNG另一套 moebooru 角色

SVG 结构

生成的 SVG 与 Moe Counter 结构完全一致:

  • <defs> 中每个唯一数字对应一个 <image>(base64 Data URI),避免重复数字重复编码。
  • <g> 中用 <use> 元素引用 defs,相同数字无额外开销。
  • 通过 <style> 应用 image-rendering: pixelated,保留像素艺术质感。
  • 暗色模式:@media (prefers-color-scheme: dark) 应用 filter: brightness(.6)

错误响应

状态码响应体原因
400{ "error": "Missing id or resource" }路由参数不是字符串
400{ "error": "Invalid resource" }resource 路径段正则解析失败
400{ "error": "Unsupported format" }format 后缀既不是 json 也不是 svg