唯杰地图 logo唯杰地图
VJMAP
EN

工作区(Workspace)

更新于 2026-04-25约 3 分钟
.md

工作区是 vjmap 的命名空间机制:不同工作区下的图、符号、KV 存储、全文索引互相隔离。

1. 概念

  • 默认工作区:不带名字;URL 用 /api/v1/map/... 前缀
  • 命名工作区:人为创建;URL 变为 /api/v1/workspace/{name}/... 前缀
  • 工作区本身也有状态:{name, description, createTime, ...},由 /api/v1/service/getWorkspace 列出
  • 一个 token 理论上可访问所有工作区;实际权限由 AuthorityId 决定

2. 切换工作区(SDK)

Python

svc = Vjmap("http://127.0.0.1:27660/api/v1", token)
svc.switch_workspace("team_a")          # 之后所有 map_url / cmd_url 都会自动带上 /workspace/team_a
svc.open_map("finance", "v1", mapopenway="Memory")  # → /api/v1/workspace/team_a/cmd/openmap/finance/v1
svc.switch_workspace("")                # 切回默认工作区

Node

svc.switchWorkspace('team_a');
await svc.openMap({ mapid: 'finance', version: 'v1', mapopenway: 'Memory' });
svc.switchWorkspace('');

3. 生命周期接口

# 操作 URL 方法
1 列出 /api/v1/service/getWorkspace GET
2 创建 /api/v1/service/workspaceCreate POST
3 修改 /api/v1/service/workspaceModify POST
4 删除 /api/v1/service/workspaceDelete/{name} DELETE
5 状态 /api/v1/service/workspaceStatus GET

详细字段、响应示例请看 api/07-workspace.md 。

4. 底层 URL 改写规则

  • web服务网关把 /api/v1/workspace/{name}/* 改写成 带 workspace 参数的 /api/v1/map/*;图形服务不感知名字,由网关保证隔离
  • 因此凡是 /api/v1/map/ 下的路径都能在 /workspace/{name}/ 下一模一样使用
  • /api/v1/service/*(全局 KV、符号库、全文搜索)不受工作区前缀影响;它们的隔离通过各自的 workspace 参数实现(大部分接口接受 workspace= query)

5 反模式

  • 不要在热路径里频繁调用 switch_workspace() 再立刻发请求;SDK 内部只是改前缀,没 IO,但业务代码可能会混乱。建议一个 svc 实例绑一个 workspace。
  • 不要把 workspace 和 mapid 拼到一起当复合键用;保持每图一个 mapid,workspace 单独字段。
这篇文档有帮助吗?