使用 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 生成。可以使用 gateway_ocids 参数(如以下信息中所述)重用现有网关。

命令选项

-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 对象,其中键是配置变量名称,值是配置变量值。除了 gateway_ocids 之外的所有配置变量对于生成包装 API 软件包都是必需的。如果除 gateway_ocids 以外的任何以下变量未传递到命令,包装器 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 的管理和访问
gateway_ocids 要重用的现有 API 网关的 Oracle Cloud 标识符 (OCID) 的 JSON 对象。必须为每 50 个包装 API 指定一个网关。如果未指定 gateway_ocids 参数,该命令将创建 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"}'

以下示例显示了使用 gateway_ocids 参数的命令。

ochain generateFnAPI -m '{"addConversionRate":"/addConversionRateTest", "addTokenAdmin": "/addTokenAdminTest"}' -c '{"compartment_ocid":"ocid1.compartment.oc1..xxxx","compartment_name":"MyCompartment","identity_domain":"OracleIdentityCloudService","blockchain_channel":"default","blockchain_url":"https://blockchain-url","blockchain_chaincode":"my_chaincode","blockchain_sync":true,"blockchain_timeout":6000,"vcn_display_name":"myVCN","application_display_name":"myApp","gateway_display_name":"myGateway","deployment_display_name":"myDeployment","deployment_path_prefix":"myprefix","ocir_repo_name":"myRepo","policy_name":"myPolicy","gateway_ocids":"{\"1\":\"ocid1.apigateway.oc1.xxx\",\"2\":\"ocid1.apigateway.oc1.yyy\"}"}'
-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