래퍼 API 패키지 구성 요소

래퍼 API 패키지에는 래퍼 API의 아카이브 파일, 배치용 Terraform 스크립트 및 해당하는 Postman 모음이 포함됩니다.

  • 래퍼 API 아카이브 파일의 이름은 <ChaincodeName>WrapperAPI.zip입니다. 또한 스택 리소스에 배치해야 하는 Terraform 스크립트가 포함되어 있습니다.
  • Postman 컬렉션 파일의 이름은 <ChaincodeName>_WrapperAPI.postman_collection.json입니다. 이 모음을 사용하여 모든 래퍼 API를 호출할 수 있습니다.

래퍼 API 패키지

래퍼 API 패키지에는 래퍼 API 생성에 필요한 모든 OCI(Oracle Cloud Infrastructure) 리소스를 프로비저닝하는 Terraform 스크립트가 포함되어 있습니다. 추가 Terraform 지원 파일과 각 API에 대한 Oracle Functions 폴더가 있습니다. 래퍼 API 패키지는 다음과 같은 OCI 리소스를 생성합니다.

  • VCN(가상 클라우드 네트워크): 통신용 네트워크 Infrastructure를 설정합니다.
  • 애플리케이션(Oracle Functions): 서버리스 함수를 배포하여 API 논리를 처리합니다.
  • API 게이트웨이: API 요청을 관리하고 라우팅할 게이트웨이를 생성합니다.
  • API 배치: API 게이트웨이에서 API를 구성하고 배치합니다.
  • API 배치 정책: 보안 액세스를 활성화하는 데 필요한 IAM 정책을 설정합니다.
  • OCI 레지스트리: Docker 이미지 관리를 위한 컨테이너 레지스트리를 제공합니다.
래퍼 API를 생성한 후 구성 변수를 변경하려는 경우 Visual Studio 코드에서 업데이트하거나 래퍼 API 패키지를 추출하여 업데이트된 끝점 및 리소스 이름과 업데이트된 끝점이 있는 routes.go 파일로 terraform.tfvars 파일을 업데이트할 수 있습니다. 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 인증을 지원합니다. 자세한 내용은 Postman Collections에 대한 향상을 참조하십시오.

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 모든 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
bc-url Oracle Blockchain Platform 인스턴스의 REST 프록시 URL입니다. https://test-xyz-abc.blockchain.ocp.oraclecloud.com:7443/restproxy
access-token-url IDCS(Oracle Identity Cloud Service) 액세스 토큰 URL입니다. 예: <idcs_endpoint>/oauth/v1/token access-token-url 값
client-id Oracle Blockchain Platform 인스턴스의 클라이언트 ID입니다. 클라이언트 ID
client-secret Oracle Blockchain Platform 인스턴스의 클라이언트 암호입니다. 클라이언트-비밀
peer 이 변수는 모든 setter 및 getter API에 대한 피어 헤더가 필요한 기밀 체인코드 래퍼 API Postman 모음에만 존재합니다. org-xyz-abc.blockchain.ocp.oraclecloud.com:20009년

래퍼 API 패키지를 배치한 후 스택 리소스 배치의 출력은 게이트웨이 끝점 값을 포함하는 JSON 객체입니다. API를 50개 이상 생성하는 경우 API 50개당 하나씩 여러 게이트웨이 엔드포인트가 생성됩니다. 이러한 끝점과 관련된 Postman 컬렉션 변수를 업데이트해야 합니다. Postman 컬렉션의 끝점 관련 변수는 Stack Resource Manager의 래퍼 API 패키지 배포 출력에서 적절한 값으로 업데이트되어야 합니다.

래퍼 API Postman 모음의 모든 setter API에는 요청 페이로드에 endorsers 또는 sameOrgEndorser 매개변수가 포함됩니다. sameOrgEndorser 매개변수가 필요한 API를 지정하는 정보는 체인 코드의 .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로 포함합니다.