包装器 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 资源。

  • Virtual Cloud Network (VCN):建立用于通信的网络基础设施。
  • 应用 (Oracle Functions):部署无服务器函数来处理 API 逻辑。
  • API 网关:创建用于管理和路由 API 请求的网关。
  • API 部署:在 API 网关上配置和部署 API。
  • API 部署策略:设置必要的 IAM 策略以启用安全访问。
  • OCI 注册表:提供用于管理 Docker 映像的容器注册表。
生成包装 API 后,如果要更改任何配置变量,可以在 Visual Studio Code 中更新它们,也可以提取包装 API 程序包并使用更新的端点和资源名称更新 terraform.tfvars 文件。编辑 terraform.tfvars 文件的 function_paths 变量以更新端点。function_paths 变量是一个 JSON 对象,其中 key 是 API 名称,value 是另一个具有以下两个键的 JSON 对象:
  • path:定义 API 的端点
  • type:指定请求类型(POST 或 GET)
以下文本显示 function_paths 变量的示例。
function_paths="{\"activateAccount\":{\"path\":\"/activateAccount\",\"type\":[\"POST\"]}}"

Postman 集合

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 的对等标头。 org-xyz-abc.blockchain.ocp.oraclecloud.com:20009

部署包装器 API 程序包后,堆栈资源部署的输出是一个包含网关端点值的 JSON 对象。如果生成了 50 多个 API,则会生成多个网关端点,每个端点为 50 个 API。您必须更新与这些端点相关的 Postman 集合变量。Postman 集合中与端点相关的变量必须使用堆栈资源管理器中包装器 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 包含。
有关使用 Postman 集合的更多详细信息,请参见以下主题。