使用 CLI 產生包裝函式 API

增強版的區塊鏈 App 產生器包含 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 Gateway 會將單一部署中可建立的路由數目限制為 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 < 配置 >
組態選項是用來傳送包裝程式 API 套件所需的組態變數。這是索引鍵 / 值組的 JSON 物件,其中索引鍵是組態變數名稱,而值為組態變數值。產生包裝函式 API 套裝程式時,必須要有 gateway_ocids 以外的所有組態變數。如果除了 gateway_ocids 以外的任何下列變數都未傳遞給命令,包裝函式 API 產生就會失敗。您可以在建立包裝函式 API 之後,藉由擷取包裝函式 API .zip 檔案來編輯這些值。
變數名稱 描述
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 ID (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 < 全部 >
所有選項都會為鏈碼中定義的所有控制器 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