通用约定(Conventions)
所有接口的共性规则集中在这里,具体接口文档不再重复。
1. Base URL 与前缀
- 默认:
http://127.0.0.1:27660/api/v1 - 文档里写成
{base};SDK 自动补/结尾 - 三种子前缀:
| 前缀 | 用途 |
|---|---|
{base}/map/... |
默认工作区的所有图相关接口 |
{base}/workspace/{name}/... |
命名工作区下的图相关接口(与 /map/ 等价但隔离存储) |
{base}/service/... |
与图无关的工作区/KV/符号库/全文搜索/AI 等接口 |
系统级根路径:
| 路径 | 说明 |
|---|---|
/heart |
健康检查 |
/version |
版本 |
2. HTTP 方法
- cmd 接口(路径形如
/api/v1/map/cmd/<cmd>/<mapid>/<version>)既接受 GET 也接受 POST;网关Router.Any统一挂载。SDK 默认走 POST,原因:- 请求体大时 GET 超长
- 语义上是"动作"而非"只读资源"
- 其它接口遵循标准 REST:GET 查、POST 创建、PUT 修改、DELETE 删除
3. 鉴权
详情见
03-authentication.md。
- 必带:
token=<JWT>(推荐放 query,也可放 header) - 加密图:请求头
secretKey: <key1>_;_<key2>...或 querysecret_key=... - 全局 access key(
ak开头 18 位):可放在accessKey位置用来一次性访问多张加密图
4. 路径占位符
| 占位 | 常用取值 | 含义 |
|---|---|---|
{mapid} |
sys_zp、_、_null |
图 ID;_ / _null 用在不需要 mapid 的 cmd 上 |
{version} |
v1、_ |
版本号;_ 表示与具体版本无关 |
{layer} |
"0,1,2"、default、空 |
图层名/ID;多个用逗号 |
{z}/{x}/{y} |
10/854/402 |
标准 XYZ 瓦片坐标 |
{key} |
用户自定义 | KV 存储的 key(建议 URL-safe) |
重要:SDK 会对占位符做 encodeURIComponent,别再手动编码。
5. 请求体约定
| 场景 | Content-Type | 备注 |
|---|---|---|
| 绝大多数 cmd | application/json |
SDK 默认 |
文件上传(/map/uploads、/service/uploadImg) |
multipart/form-data |
字段名 file |
KV 存值 POST /data/{key} |
application/x-www-form-urlencoded |
字段 data= |
6. 响应结构
两类并存,SDK 都能识别:
6.1 web服务 网关标准响应
{
"code": 0,
"msg": "",
"data": { /* 实际内容 */ }
}
code == 0→ SDK unwrap 成datacode != 0→ SDK 抛VjmapError(status=200, body={...})
6.2 图形服务
{
"bounds": [...],
"layers": [...],
...
}
直接返回,不包 {code,msg,data}。
6.3 错误响应
- HTTP 4xx / 5xx:SDK 抛
VjmapError(status=4xx|5xx, url, body) - cmd 执行失败但网关路由成功:多数 cmd 用
{error: "..."}或{result: {succeed: false}}表达;SDK 不会自动判断业务成功/失败,请业务侧自行校验
7. 分页 / 列表
大部分列出接口没有分页,一次返回全部:
listmaps:按 mapid 聚合,返回{mapid: [ {version, db, filename, ...} ]}symbol/list/{cat}:数组getWorkspace:数组
少数有 limit / offset / pageSize / pageNum(例如 fullsearch/search),每个接口文档单独说明。
8. 幂等性与重试
| 操作 | 幂等 | 可自动重试? |
|---|---|---|
openmap (GeomRender) |
否 | 否,会占用 图形服务 子进程 |
metadata / listmaps / runstatus |
是 | 是 |
updatemap / updateMetadata |
否 | 否 |
deletemap / deletestyle |
是 | 是,但业务需防误触 |
| 瓦片 GET | 是 | 是 |
SDK 不内置重试;
9. 超时
- SDK 默认 60 秒;超长 cmd(
composeNewMap、saveOfflineTileDb、extractTableon 大图)可能要 3-5 分钟,调用时显式timeout=300(秒)。 - 图形服务单请求默认
600000 ms = 10 min(runstatus.process.reqTimeout),超过会被强杀。
10. 文件下载 / 流式接口
导出 PDF、DXF、离线瓦片包、缩略图等接口返回 二进制流。SDK 里对应方法:
- Python:
svc._request("POST", url, stream=True)返回原始requests.Response,自己.iter_content()写文件 - Node:
svc._request('POST', url, { stream: true })返回原始Response,自己await res.arrayBuffer()或管道到文件
11. 命名风格(跨语言)
| 语言 | 风格 | 例 |
|---|---|---|
| Python SDK | snake_case |
open_map, close_map, raster_tile_url |
| Node SDK | camelCase |
openMap, closeMap, rasterTileUrl |
| 文档正文 | 二者并列列出 | 每个接口都给两种示例 |
12. 日志与可观测
runstatus?detail=true:看引擎 pid、活跃请求、子进程等viewlogs?record=100:看最近 100 条日志;含 cmd 耗时、错误
这篇文档有帮助吗?感谢反馈!