Files
opsxapi/apps/server/internal/docs/content/16-server-api.md
T
logan 9a019408ab 设置中心与 Mock 数据功能
- 顶栏:移除 tauri-native 传输徽章;⋯ 更多菜单重做(设置/Mock/环境/主题/文档/官网/重置)
- 设置弹窗重写:左侧导航(外观/网络/Mock 数据/数据管理/关于)+ 分组卡片 + 开关控件
- Mock 引擎(packages/core/src/mock.ts):Mock.js 常用语法子集 + 智能字段匹配
  - 61 条默认规则(通配符/精确/正则 × string/number/integer/boolean)
  - 发送链路接入:Query/JSON Body/urlencoded/form-data/GraphQL Variables
  - Body 工具栏:智能填充(生成可编辑 @表达式模板)+ Mock 预览
  - 设置页规则表 CRUD + 表达式速查表即时预览
- 文档新增「Mock 数据」页(/docs/mock),Manifest 顺序调整
- 新增 16 个 Mock 单测(总 37 前端用例全绿)
2026-09-18 01:35:54 +08:00

2.4 KiB
Raw Blame History

本地服务(Gin)默认监听 :8787,可用环境变量 OPSXAPI_ADDR 修改。所有端点仅监听本机回环,供 Web UI 与桌面端调用。

端点总览

方法 路径 用途
GET /health 健康检查
POST /v1/proxy/http HTTP 代理(全方法、自定义头、超时)
POST /v1/proxy/http/stream NDJSON 流式代理(SSE / chunked 透传)
POST /v1/proxy/ws/connect 建立到目标 WS 的隧道会话
GET /v1/proxy/ws/attach 浏览器 attach 到隧道会话(双向桥接)
POST /v1/proxy/ws/close 关闭隧道会话
GET /docs 本文档站

HTTP 代理

curl -s -X POST http://127.0.0.1:8787/v1/proxy/http \
  -H 'Content-Type: application/json' \
  -d '{"method":"GET","url":"https://httpbin.org/get","headers":{}}'

响应:

{
  "status": 200,
  "headers": { "content-type": "application/json" },
  "body": "{ ... }",
  "timeMs": 320,
  "size": 274
}

请求体 body.mode 支持 json / xml / text / html / urlencoded / form-data,raw 为原始报文;timeoutMs 可选。

流式代理

请求体与 HTTP 代理一致,响应为 NDJSON 事件流:

{"type":"meta","status":200,"headers":{...}}
{"type":"chunk","data":"<base64>","size":1024}
{"type":"end","timeMs":1200,"size":8192}

WebSocket 隧道

# 1. 建立会话(可带自定义 Header)
curl -s -X POST http://127.0.0.1:8787/v1/proxy/ws/connect \
  -H 'Content-Type: application/json' \
  -d '{"url":"wss://echo.example.com","headers":{"Authorization":"Bearer t"}}'
# → {"sessionId":"..."}

# 2. 浏览器 / 客户端 attach(普通 WebSocket)
#    ws://127.0.0.1:8787/v1/proxy/ws/attach?sessionId=...

# 3. 关闭
curl -s -X POST http://127.0.0.1:8787/v1/proxy/ws/close \
  -H 'Content-Type: application/json' -d '{"sessionId":"..."}'

attach 后第一条消息为控制帧 {"type":"open"};此后浏览器与目标服务器双向透传。

安全边界

  • 仅允许 http/https(代理)与 ws/wss(隧道)目标。
  • 拒绝云元数据地址(169.254.169.254 等)防 SSRF。
  • 单响应上限 10 MiB;隧道会话 10 分钟无活动自动回收。

部署建议

  • 开发:./run.sh web(Vite :5173 反代 /v1、/docs 到 :8787)。
  • 生产:npm run build:web 产物交给任意静态服务器,opsxapi-server 独立部署;生产环境建议置于内网并按需增加鉴权反向代理。