包裝程式 API 套件元件

包裝函式 API 套件包含包裝函式 API 的封存檔案、用於部署的 Terraform 指令碼,以及對應的 Postman 集合。

  • 包裝程式 API 封存檔名稱為 <ChaincodeName>WrapperAPI.zip。它也包含必須部署到堆疊資源的 Terraform 命令檔。
  • Postman 集合檔案名稱為 <ChaincodeName>_WrapperAPI.postman_collection.json。您可以使用此集合來呼叫所有包裝函式 API。

包裝函式 API 套裝程式

包裝函式 API 套裝程式包含 Terraform 命令檔,可佈建建立包裝函式 API 所需的所有 Oracle Cloud Infrastructure (OCI) 資源。每個 API 都有額外的 Terraform 支援檔案和 Oracle Functions 資料夾。包裝函式 API 套裝程式會建立下列 OCI 資源。

  • 虛擬雲端網路 (VCN):建立用於通訊的網路基礎架構。
  • 應用程式 (Oracle Functions):部署無伺服器函數以處理 API 邏輯。
  • API 閘道:建立閘道以管理及遞送 API 要求。
  • API 部署:在 API 閘道上設定及部署 API。
  • API 部署原則:設定必要的 IAM 原則以啟用安全存取。
  • OCI 登錄:提供用於管理 Docker 映像檔的容器登錄。
產生包裝函式 API 之後,如果您想要變更任何組態變數,可以在 Visual Studio 程式碼中加以更新,或者您可以擷取包裝函式 API 套裝程式,並以更新的端點和資源名稱更新 terraform.tfvars 檔案。編輯 terraform.tfvars 檔案的 function_paths 變數以更新端點。function_paths 變數是 JSON 物件,其中索引鍵是 API 名稱,而值是另一個具有下列兩個索引鍵的 JSON 物件:
  • path:定義 API 的端點
  • type:指定要求類型 (POST 或 GET)
下列文字顯示 function_paths 變數的範例。
function_paths="{\"activateAccount\":{\"path\":\"/activateAccount\",\"type\":[\"POST\"]}}"

Postman Collection

Postman 集合包括所有 API 的更新端點和有效負載。下列程式碼顯示有效負載範例。
{
    "orgId": "{{bc-org-id}}",
    "userId": "user1",
    "tokenType": "fungible",
    "applicationGroups": "[\"application_groups value\"]",
    "dailyLimits": "{\"max_daily_amount\":10000,\"max_daily_transactions\":100}",
    "endorsers": {{endorsers}}
}
下表顯示 Postman 集合變數。
變數 描述 預設值
bc-admin-user 管理員使用者,擁有可存取所有 POST 要求的管理員角色。依照預設,此使用者是鏈碼中所有 POST 要求的呼叫者。 bc-admin-user 值
bc-admin-user-password 管理員使用者密碼。 bc-admin-user-password 值
bc-org-id 所有 POST 要求中的預設組織 ID,其中 orgId 是參數名稱 bc-org-id 值
bc-user-id 所有 POST 要求中的預設使用者 ID,其中 userId 是參數名稱 bc-user-id 值
bc-token-id 所有 POST 要求中的預設權杖 ID,其中 tokenId 是參數名稱 bc-token-id 值
endorsers 背書人陣列會列出特定的對等 (例如:peer1、peer2) 來認可此交易。 ["org1-xyz-abc.blockchain.ocp.oraclecloud.com:20009", "org2-xyz-abc.blockchain.ocp.oraclecloud.com:20009"]
api-gateway-endpoint 每個要求的端點,可作為包裝函式 API 端點的基礎路徑。

如果 API 少於 50 個,則會使用單一端點。如果 API 超過 50 個,端點會根據 API 數目動態產生為 api-gateway-endpoint1、api-gateway-endpoint2 等等。

https://xyz.apigateway.region.oci.customer-oci.com/CBDC
peer 此變數僅適用於機密鏈碼包裝函式 API Postman 集合,此集合需要所有 setter API 的對等標頭。 組織 -xyz-abc.blockchain.ocp.oraclecloud.com:20009

部署包裝函式 API 套件之後,堆疊資源部署的輸出會是包含閘道端點值的 JSON 物件。如果您產生超過 50 個 API,系統會產生多個閘道端點,每 50 個 API 會產生一個端點。您必須更新與這些端點相關的 Postman 收集變數。Postman 集合中的端點相關變數必須使用 Stack Resource Manager 中包裝函式 API 套裝程式部署輸出的適當值進行更新。

包裝函式 API Postman 集合中的所有 setter API 都包含要求有效負載中的 endorserssameOrgEndorser 參數。指定哪些 API 需要 sameOrgEndorser 參數的資訊,是在鏈碼中 .ochain.json 檔案的 sameOrgEndorserOptionInWrapperAPI 參數中定義。此參數中列出的 API 在其有效負載中將 sameOrgEndorser 設為 true。所有其他的 setter API 將改為包含 endorsers 參數。以下範例顯示批發 CBDC 鏈碼的參數。
"sameOrgEndorserOptionInWrapperAPI": ["addConversionRate","addTokenAdmin","addTokenAuditor","approveBurn","approveMint","burnTokens","createExchangePoolAccounts","deleteHistoricalTransactions","initializeCBDCToken","initializeExchangePoolUser","mintWithFundingExchangePool","rejectBurn","rejectMint","removeTokenAdmin","removeTokenAuditor","requestBurn","requestMint","updateCBDCToken","updateConversionRate"]
您可以視需要自訂 .ochain.json 檔案中的 sameOrgEndorserOptionInWrapperAPI 參數。當您產生包裝函式 API 時,指定的 API 將在其有效負載中包含 sameOrgEndorser 參數作為 true