使用 CLI 生成包装器 API
Blockchain App Builder 的增强版本包括 generateFnAPI
命令,该命令为链代码项目中的所有控制器 API 生成包装 API。
Usage: ochain generateFnAPI [options]
Generation of WrapperAPI package for controller functions
Options:
-h, --help Output command usage information
-D, --debug Enable debug logging
-m, --mapping <mapping> Info about functions endpoints mapping is mandatory.
-c, --config <config> Info about configuration variables is mandatory.
-a, --all <all> Generate the wrapperAPI package for entire controller functions
-p, --project <path> Path to the Ochain chaincode project to generate the WrapperAPI package. If not specified, it defaults to current directory.
以下示例说明如何为本地链代码项目生成包装器 API。
ochain generateFnAPI --mapping <info object about function mapping> --config <info about the config variables> --project <Path to the Ochain chaincode project> --out <Path to the generated postman collection>
运行 generateFnAPI
命令时,系统会提示您是否覆盖选择位置中存在的任何以前的包装器 API 软件包。
API 网关将单个部署中可以创建的路由数量限制为 50 个。如果尝试使用 generateFnAPI
命令生成超过 50 个包装器 API,系统将提示您是否创建多个网关。创建具有相同部署路径前缀的多个网关将在所有包装器 API 端点之间保持一致的基本路径。如果选择不创建多个网关,将取消包装器 API 生成。
命令选项
- -m, --mapping <mapping>
- 映射选项定义控制器 API 的配置,指定端点名称以及需要生成包装器 API 的控制器 API。映射是键/值对的 JSON 对象,其中键是控制器 API 的名称,值是与该控制器 API 关联的定制端点。
以下示例显示了使用扩展标记分类框架标准的链代码的映射。
ochain generateFnAPI --mapping '{"addConversionRate":"/addConversionRateTest", "addTokenAdmin": "/addTokenAdminTest", "approveBurn": "/approveBurnTest", "createAccount": "/createAccount", "associateTokenToAccount": "/associateTokenToAccountTest", "getAllOrgAccounts": "/getAllOrgAccounts"}' --config <info about the config variables> --project <Path to the Ochain chaincode project> --out <Path to the generated postman collection>
- -c、--config <config>
- 配置选项用于传递包装器 API 程序包所需的配置变量。它是键/值对的 JSON 对象,其中键是配置变量名称,值是配置变量值。所有配置变量对于生成包装器 API 程序包是必需的。如果未将以下任何变量传递给命令,包装器 API 生成将失败。通过提取包装 API
.zip
文件,可以在创建包装 API 后编辑这些值。变量名称 说明 compartment_ocid
Oracle Cloud Infrastructure (OCI) 中区间的 OCID。 compartment_name
OCI 区间的名称。 identity_domain
要使用的身份域。 blockchain_channel
部署链代码的 Oracle Blockchain Platform 渠道的名称。 blockchain_url
与链代码部署关联的 Oracle Blockchain Platform URL。 blockchain_chaincode
要为其生成包装器 API 的链代码的名称。 blockchain_sync
要包括在 API 调用的有效负载中的同步值。 blockchain_timeout
要包括在 API 调用的有效负载中的超时值。 vcn_display_name
OCI 虚拟云网络的显示名称。 application_display_name
OCI 应用程序的显示名称。 gateway_display_name
API 网关的显示名称。 deployment_display_name
API 网关中部署的显示名称。 deployment_path_prefix
API 网关中的部署路径前缀,用于指定路由的部署路径。 deployment_path_prefix
变量必须以斜杠 (/) 开头。ocir_repo_name
OCI 注册表资料档案库名称。 ocir_repo_name
变量必须全部为小写字母。policy_name
通过为组织内的组和区间定义的权限,可以进行受控管理和访问 API 的策略的名称 以下示例显示了使用扩展标记分类框架标准的链代码的映射。
ochain generateFnAPI -m '{"addConversionRate":"/addConversionRateTest", "addTokenAdmin": "/addTokenAdminTest", "approveBurn": "/approveBurnTest", "createAccount": "/createAccount", "associateTokenToAccount": "/associateTokenToAccountTest", "getAllOrgAccounts": "/getAllOrgAccounts"}' -c '{"compartment_ocid": "compartment_ocid value", "compartment_name": "compartment_name value", "identity_domain" : "OracleIdentityCloudService", "blockchain_channel": "default", "blockchain_url": "blockchain_url value", "blockchain_chaincode": "blockchain_chaincode value", "blockchain_sync": true, "blockchain_timeout": 6000, "vcn_display_name": "vcn_display_name value", "application_display_name": "application_display_name value", "gateway_display_name": "gateway_display_name value", "deployment_display_name": "deployment_display_name value", "deployment_path_prefix": "deployment_path_prefix value", "ocir_repo_name": "ocir_repo_name value", "policy_name": "policy_name value"}'
- -a, --all <all>
- all 选项为链代码中定义的所有控制器 API 生成包装器 API。如果为
true
,此选项将覆盖映射选项。每个包装器 API 都分配有一个与 API 名称对应的默认端点。如果指定“全部”选项,则仍必须为映射选项提供空的 JSON 对象 ({})。以下示例显示了使用扩展标记分类框架标准的链代码的映射。
ochain generateFnAPI -m '{}' -c '{"compartment_ocid": "compartment_ocid value", "compartment_name": "compartment_name value", "identity_domain" : "OracleIdentityCloudService", "blockchain_channel": "default", "blockchain_url": "blockchain_url value", "blockchain_chaincode": "blockchain_chaincode value", "blockchain_sync": true, "blockchain_timeout": 6000, "vcn_display_name": "vcn_display_name value", "application_display_name": "application_display_name value", "gateway_display_name": "gateway_display_name value", "deployment_display_name": "deployment_display_name value", "deployment_path_prefix": "deployment_path_prefix value", "ocir_repo_name": "ocir_repo_name value", "policy_name": "policy_name value"}' -a true