- 后端
- 数据库
- GraphQL
【免费下载链接】prisma1
💾 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL & MongoDB) [deprecated]
prisma info是 Prisma CLI 中用于查看当前 Prisma 服务(Service)运行信息的核心命令,它能一次性列出服务当前部署到的全部集群、所处的 Stage(开发/生产等环境),以及对应的 HTTP 与 WebSocket API 端点,并支持以 JSON 形式输出以便脚本消费。本文以 prisma1 仓库中 1.12 版本的官方命令参考文档为主体,结合prisma-cli-core与prisma-yml的源码实现,为你完整讲解该命令的用法、全部 flags、输出格式以及底层实现原理。
命令作用与适用场景
prisma info面向 Prisma 服务开发者与运维人员,用于快速确认以下三类信息:
- 服务当前已部署到的全部集群(cluster)
- 当前服务所处的 Stage(如
dev、staging、prod) - 服务的 API 端点,包括 HTTP 端点与 WebSocket(订阅)端点
典型应用场景包括:部署后核对服务地址是否正确暴露、排查订阅功能所需的 WebSocket 端口、在 CI/CD 脚本中以--json模式抓取端点信息用于后续的 API 测试或数据导入导出。
基本用法
在包含prisma.yml的 Prisma 服务目录下直接执行:
prisma info命令会读取当前目录(或通过--project指定的路径)下的prisma.yml,解析出服务名(service)、Stage(stage)与集群信息,然后输出服务信息。
在源码中,该命令由InfoCommand实现,其topic为info,描述为Display service information (endpoints, cluster, ...)。执行时,命令会通过definition.load()加载 Prisma 定义文件,随后依次取出serviceName、stage与 workspace,再调用getCluster()获取集群——如果prisma.yml中没有设置cluster属性,命令会直接抛出错误提示:
No cluster set. Please set the "cluster" property in your prisma.yml
Flags 参数详解
官方参考文档定义了三个核心 flags,源码实现中还额外提供了两个实用选项,完整清单如下:
| Flag | 简写 | 类型 | 说明 |
|---|---|---|---|
--env-file | -e | string | 指定.env文件路径,用于注入环境变量(如PRISMA_ENDPOINT、PRISMA_MANAGEMENT_API_SECRET) |
--json | -j | boolean | 以 JSON 格式输出服务信息,便于脚本解析 |
--secret | -s | boolean | 在 JSON 输出中包含服务 secret(必须与--json配合使用) |
--current | -c | boolean | 已废弃(Deprecated),仅保留兼容 |
--project | -p | string | 指定 Prisma 定义文件(prisma.yml)的路径,默认使用当前目录下的定义文件 |
其中--env-file的说明为 "Path to .env file to inject env vars",--project的说明为 "Path to Prisma definition file"。这两个 flags 由 CLI 引擎的 flags 机制统一解析(对应源码 info/index.ts 中的flags定义)。
关于--secret的注意事项
源码 info/index.ts 中的逻辑明确显示:只有printJson(即--json)为真时,--secret才会把secrets写入输出对象;如果只传--secret而不传--json,secret 不会出现在普通文本输出中。官方文档也对此做了特别说明:
Note: The secret will not be printed if the
--jsonflag is not provided.
输出格式与字段说明
文本模式(默认)
不带任何参数执行prisma info时,命令会先输出一行Service Name: <服务名>(服务名以粗体显示),随后输出各 Stage 的信息块。根据 printStage 的实现,每个 Stage 的输出结构为:
<stage> (cluster: `<cluster名称>`) HTTP: <HTTP API 端点> Websocket: <WebSocket 端点>- HTTP:即 GraphQL API 端点,由
cluster.getApiEndpoint(name, stage, workspace)计算得出。 - Websocket:订阅端点,由
cluster.getWSEndpoint(name, stage, workspace)计算得出,其实现就是把 HTTP 端点 URL 的http前缀替换为ws(见 Cluster.ts)。
如果当前集群版本不低于1.29.0,输出末尾还会额外附带一段 Prisma Admin 入口链接:
You can view & edit your data here: Prisma Admin: <HTTP端点>/_admin这一判断由satisfiesVersion(version, '1.29.0')完成,Prisma Admin 链接由 printAdminLink 拼装,格式为{API端点}/_admin。
JSON 模式(--json)
执行prisma info --json时,输出变为格式化的 JSON 对象,包含以下字段:
| 字段 | 说明 |
|---|---|
name | 服务名(service) |
stage | 当前 Stage |
cluster | 集群名称 |
workspace | 所属 workspace(共享集群场景下存在,否则为null) |
httpEndpoint | HTTP API 端点 |
wsEndpoint | WebSocket 端点 |
secret | 服务 secret 数组(仅当同时传入--secret时出现) |
JSON 由JSON.stringify(result, null, 2)生成,缩进 2 个空格,便于阅读与脚本解析(对应 info/index.ts)。
官方文档示例
打印当前服务信息
prisma info输出示例(文本模式):
Service Name: my-service dev (cluster: `local`) HTTP: http://localhost:4466/my-service/dev Websocket: ws://localhost:4466/my-service/dev以 JSON 格式打印当前服务信息
prisma info --json输出示例:
{ "name": "my-service", "stage": "dev", "cluster": "local", "workspace": null, "httpEndpoint": "http://localhost:4466/my-service/dev", "wsEndpoint": "ws://localhost:4466/my-service/dev" }以 JSON 格式打印服务信息并包含 secret
prisma info --json --secret输出示例(JSON 对象中会额外出现secret字段):
{ "name": "my-service", "stage": "dev", "cluster": "local", "workspace": null, "httpEndpoint": "http://localhost:4466/my-service/dev", "wsEndpoint": "ws://localhost:4466/my-service/dev", "secret": ["your-service-secret"] }注意:务必同时传入
--json,否则 secret 不会被打印。
端点生成规则与底层实现
prisma info展示的 HTTP/WebSocket 端点并非硬编码,而是由 Cluster.getApiEndpoint 依据服务名、Stage 与 workspace 动态拼接,规则如下:
- 非共享集群且
service === 'default'、stage === 'default'时,直接返回集群baseUrl; - 非共享集群且
stage === 'default'时,返回${baseUrl}/${service}; - 私有集群或本地(local)集群时,返回
${baseUrl}/${service}/${stage}; - 其余情况(共享集群),返回
${baseUrl}/${workspace}/${service}/${stage}(workspace 存在时)。
而服务名与 Stage 本身则是从prisma.yml的endpoint字段中解析出来的:PrismaDefinition的service与stagegetter 会通过parseEndpoint从 endpoint 中拆解出服务名与 Stage(见 PrismaDefinition.ts),getWorkspace()则用于提取共享集群场景下的 workspace。
以本地部署的典型 endpoint 配置为例:
endpoint: http://localhost:4466/my-service/dev执行prisma info时,service解析为my-service、stage解析为dev,最终输出http://localhost:4466/my-service/dev与ws://localhost:4466/my-service/dev。
相关命令与后续操作
prisma info输出的 HTTP 端点可以直接用于 GraphQL 查询与订阅,也可与数据导入导出功能衔接:
prisma import:向服务导入数据,内部使用getImportEndpoint拼装${endpoint}/import;prisma export:从服务导出数据,内部使用getExportEndpoint拼装${endpoint}/export;prisma deploy:在部署后可通过prisma info核对新 Stage 的端点。
此外,--json输出适合在脚本中通过jq等工具提取httpEndpoint字段,用于自动化测试、健康检查或 CI/CD 流程中的动态配置注入。
小结
prisma info是一个轻量但实用的诊断命令,通过一行命令即可掌握服务的集群部署情况、Stage 环境以及 HTTP/WebSocket 双端点。掌握--json与--secret的组合用法,可以让你在自动化运维与脚本集成中更高效地消费这些信息;理解其背后的端点拼接规则,则有助于在遇到端点不符合预期时快速定位是prisma.yml配置还是集群类型所致。
- 后端
- 数据库
- GraphQL
【免费下载链接】prisma1
💾 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL & MongoDB) [deprecated]
相关推荐
Prisma CLI 实战:`prisma info` 命令详解——查看服务集群、Stage 与 API 端点信息
Prisma CLI 实战: prisma info 命令详解——查看服务集群、Stage 与 API 端点信息 prisma info 是 Prisma CL
后端数据库GraphQLPrisma CLI `prisma info` 命令详解:查看服务部署信息、集群与 API 端点
Prisma CLI prisma info 命令详解:查看服务部署信息、集群与 API 端点 prisma info 是 Prisma CLI(本仓库 cli
后端数据库GraphQLPrisma CLI 的 `prisma info` 命令:查看服务部署信息、Stage 与 API Endpoints
Prisma CLI 的 prisma info 命令:查看服务部署信息、Stage 与 API Endpoints 本指南详细介绍 Prisma CLI 中用
后端数据库GraphQL
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考