使用 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