包装 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) 资源。还有其他 Terraform 支持文件和每个 API 的 Oracle Functions 文件夹。包装 API 程序包创建以下 OCI 资源。
- 虚拟云网络 (VCN):建立用于通信的网络基础结构。
- 应用程序 (Oracle Functions):部署无服务器函数来处理 API 逻辑。
- API 网关:创建网关以管理和路由 API 请求。
- API 部署:在 API 网关上配置和部署 API。
- API 部署策略:设置必要的 IAM 策略以启用安全访问。
- OCI Registry:提供用于管理 Docker 映像的容器注册表。
生成包装 API 后,如果要更改任何配置变量,可以在 Visual Studio Code 中更新这些变量,或者可以提取包装 API 软件包并使用更新的端点和资源名称更新
terraform.tfvars
文件以及使用更新的端点更新 routes.go
文件。编辑 terraform.tfvars
文件中的 function_paths
变量以更新端点。function_paths 变量使用以下语法定义端点:{endpoint, methodType}
。以下文本显示了 function_paths
变量的示例。function_paths="[{\"endpoint\":\"/activateCBDCAccount\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/addCBAdmin\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/approveBurn\",\"methodType\":[\"POST\"]}]"
routes.go
文件位于 <ChaincodeName>OCIFunction
文件夹中。routeData
变量包含网关中创建的所有路由的元数据,包括路由名称、参数以及是否存在可选参数。更新 terraform.tfvars
文件中的 function_paths
变量中的端点时,还必须更新 routes.go
文件中 routeData
变量中的相应条目,如以下示例中所示。var routeData = map[string]Route{
"/activateCBDCAccount": {
Args: []string{"activateAccount", "orgId", "userId", "tokenId"},
OptionalParams: true,
},
}
邮递员
Postman 集合现在支持机密链码和 OAuth 2.0 验证。有关更多信息,请参见 Enhancements to 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 |
具有 admin 角色并且可以访问所有 POST 请求的管理用户。默认情况下,此用户是链代码中所有 POST 请求的调用方。
|
bc-admin-user 值 |
bc-admin-user-password |
管理用户口令。 | bc-admin-user-password 值 |
bc-org-id |
orgId 是参数名称的所有 POST 请求中的默认组织 ID
|
bc-org-id 值 |
bc-user-id |
userId 是参数名称的所有 POST 请求中的默认用户 ID
|
bc-user-id 值 |
bc-token-id |
tokenId 是参数名称的所有 POST 请求中的默认标记 ID
|
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 个,则使用单个端点。如果有超过 50 个 API,则根据 API 数量,以 |
https://xyz.apigateway.region.oci.customer-oci.com/CBDC |
bc-url |
Oracle Blockchain Platform 实例的 REST 代理 URL。 | https://test-xyz-abc.blockchain.ocp.oraclecloud.com:7443/restproxy |
access-token-url |
Oracle Identity Cloud Service (IDCS) 访问令牌 URL。例如:<idcs_endpoint>/oauth/v1/token |
access-token-url 值 |
client-id |
Oracle Blockchain Platform 实例的客户端 ID。 | 客户机标识 |
client-secret |
Oracle Blockchain Platform 实例的客户端密钥。 | 客户端机密 |
peer |
此变量仅存在于机密链代码包装器 API Postman 集合中,该集合需要所有 setter 和 getter API 的对等标头。 | org-xyz-abc.blockchain.ocp.oraclecloud.com:20009 |
部署包装 API 程序包后,堆栈资源部署的输出是一个包含网关端点值的 JSON 对象。如果您生成超过 50 个 API,将生成多个网关端点,每 50 个 API 一个。您必须更新与这些端点相关的 Postman 集合变量。Postman 集合中与端点相关的变量必须使用堆栈资源管理器中包装 API 软件包部署的输出中的相应值进行更新。
包装器 API Postman 集合中的所有 setter API 都包含请求有效负载中的
endorsers
或 sameOrgEndorser
参数。指定哪些 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 集合的更多详细信息,请参阅以下主题。