---
docStatus: current
---

# 模块方法调用入口

区分 CLI、平台应用和 Runtime 服务网关的真实路径、参数包装与身份来源。

模块没有统一的 `/api/module/` 调用入口。调用方先选择适用的公开合同，再读取目标 Runtime 的服务和方法定义。
`businessId` 是 Runtime 服务身份；Module 内部行 ID、版本行 ID、资源 key 和完整 Resource Locator 不能替代它。
平台应用浏览器通过声明的目标名称调用，不读取 Runtime `businessId`。

## 按调用方选择入口

| 调用方                   | 入口                                                                   | 业务参数               |
| --------------------- | -------------------------------------------------------------------- | ------------------ |
| 本机 CLI、开发者自动化         | `baijimu runtime service call`                                       | `--params` JSON 对象 |
| 平台应用浏览器               | `POST {appGatewayApiBase}/workspace-runtime/apps/{installId}/invoke` | 请求体中的 `params`     |
| 获准直连 Runtime 服务网关的调用方 | `POST {apiGatewayUrl}/{businessId}/{methodName}`                     | 方法参数位于请求体顶层        |
| 模块后端调用属性绑定服务          | `POST {access.url}/{methodName}`                                     | 方法参数位于请求体顶层        |

`apiGatewayUrl`、`access.url` 和凭据由当前 Runtime 配置或授权交付返回；`appGatewayApiBase` 来自应用同源配置。
不要从域名、工作区 ID、资源 key 或目标 `businessId` 自行推导地址。
显式配置的业务网关路由以该网关自己的合同为准，不能把任意自定义路径当作平台通用接口。

## CLI 与开发者自动化

先逐级读取本机 `--help`，再在明确工作区、Runtime、来源环境与 Bundle 范围内执行
`runtime services list`、`runtime service get`，从返回值选择准确 `businessId`，回读目标方法的 `paramDefinitions`。
只在已授权业务效果或确认只读的情况下执行调用：

```bash
baijimu runtime service call <businessId> <methodName> \
  --workspace-id <workspaceId> \
  --application-runtime-id <applicationRuntimeId> \
  --params '{}'
```

无参数方法显式传 `{}`。指定 Runtime 时，发现、详情和调用使用同一 Runtime；不指定时使用该工作区默认 Runtime。
CLI 使用的公开 HTTP 合同是：

```http
POST /partner/v1/backend-instance/api/workspaces/{workspaceId}/runtime/services/call
Content-Type: application/json
```

```json
{
  "applicationRuntimeId": "<applicationRuntimeId>",
  "businessId": "<businessId>",
  "method": "<methodName>",
  "params": {}
}
```

认证交由已登录 CLI 管理。HTTP 请求中的 `applicationRuntimeId` 可省略以选择工作区默认 Runtime。
示例文件：[Runtime 服务请求](/examples/runtime-invocation/runtime-service-request.json)。

## 平台应用

SDK 10.0.0 使用应用声明的目标名称字符串：

```ts
const result = await client.call("course-directory", "createCourse", { name: "高等数学" });
```

`target` 名称来自应用配置 `targets`，不接受浏览器提交的资源对象、Runtime 服务 ID 或凭据。
完整配置和请求见[调用模块方法](/development/bundle-development/platform-application-development/module-method-calls/)。

## Runtime 服务网关与属性路径

普通服务路径首段是当前 Runtime 的 `businessId`，末段是方法。
通过属性调用时，首段是来源模块的 `businessId`，中间段是声明的属性及 Map/List 选择器；平台按有效绑定解析目标。
后端应直接使用交付的 `access.url`，追加编码后的方法段。Map 按完整键选择，List 按规范零起下标选择。
完整 URL、选择器编码、凭据保存和请求级用户委托见[模块服务间调用协议](/development/bundle-development/module-development/service-to-service-calls/)。

Runtime 网关直连请求体中的字段与方法参数同名。只有方法确实声明名为 `params` 的参数，才传
`{"params": {...}}`。CLI 和 App Gateway 的外层 `params` 属于各自调用信封，不能照搬到直连网关请求体。
