Skip to content

HTTP API 总览

🌐 `pkg/api` — 把 snir 暴露为 HTTP 服务。

pkg/api 基于 gorilla/mux 提供 HTTP 接口,让非 Go 程序也能调用 snir,支持鉴权、并发限流、队列。

📁 源码目录:pkg/api/

文件结构

文件源码职责
types.gotypes.go请求/响应/Server 类型
server_methods.goserver_methods.goServer 方法、路由
server.goserver.go健康统计、并发入口
screenshot.goscreenshot.go截图端点
batch.gobatch.go批量端点
concurrency.goconcurrency.go并发限流器
middleware.gomiddleware.go鉴权中间件
helpers.gohelpers.go辅助函数

端点一览

方法路径说明详解
POST/screenshot单次截图
GET/screenshot/:id取已存截图
GET/screenshots列出截图
POST/batch批量截图
GET/health健康检查
GET/stats统计

请求处理链

一次请求的完整时序

下图展示一次 HTTP API 请求从接入到返回的完整链路:调用方发起请求,依次穿过鉴权、并发限流中间件,进入 Handler 后由 Server 调用 Driver 完成截图,再沿原路返回 JSON 响应。

启动

生产启动最小参数

bash
snir api --host 127.0.0.1 --port 8080 \
  --api-key $(openssl rand -hex 32) \
  --max-concurrent 10 --queue-size 100
  • --host 127.0.0.1:仅本机,公网暴露交给反代
  • --api-key:强随机,勿用弱口令
  • --max-concurrent:建议 ≤ Chrome 池大小,否则请求排队

CLI api安全

内部视角

实现细节见 pkg/api(内部)

下一步

基于 MIT 许可发布