Componenti package API wrapper

I package API wrapper contengono un file di archivio delle API wrapper, uno script Terraform per la distribuzione e una raccolta Postman corrispondente.

  • Il file di archivio dell'API wrapper è denominato <ChaincodeName>WrapperAPI.zip. Contiene anche uno script Terraform che deve essere distribuito nella risorsa stack.
  • Il file di raccolta Postman è denominato <ChaincodeName>_WrapperAPI.postman_collection.json. È possibile utilizzare questa raccolta per chiamare tutte le API wrapper.

Package API wrapper

Il package API wrapper contiene uno script Terraform che esegue il provisioning di tutte le risorse Oracle Cloud Infrastructure (OCI) necessarie per la creazione delle API wrapper. Sono disponibili ulteriori file di supporto Terraform e una cartella Oracle Functions per ogni API. I package API wrapper creano le risorse OCI seguenti.

  • Rete cloud virtuale (VCN): stabilisce l'infrastruttura di rete per la comunicazione.
  • Applications (Oracle Functions): distribuisce funzioni serverless per gestire la logica API.
  • Gateway API: crea il gateway per gestire e instradare le richieste API.
  • Distribuzione API: configura e distribuisce le API sul gateway API.
  • Criterio di distribuzione API: imposta i criteri IAM necessari per abilitare l'accesso sicuro.
  • Registro OCI: fornisce un registro container per la gestione delle immagini Docker.
Dopo aver generato le API wrapper, se si desidera modificare le variabili di configurazione, è possibile aggiornarle in Visual Studio Code oppure estrarre il package API wrapper e aggiornare il file terraform.tfvars con endpoint e nomi di risorsa aggiornati e il file routes.go con endpoint aggiornati. Modificare la variabile function_paths nel file terraform.tfvars per aggiornare un endpoint. La variabile function_paths definisce gli endpoint con la sintassi seguente: {endpoint, methodType}. Il testo seguente mostra un esempio di variabile function_paths.
function_paths="[{\"endpoint\":\"/activateCBDCAccount\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/addCBAdmin\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/approveBurn\",\"methodType\":[\"POST\"]}]"
Il file routes.go si trova nella cartella <ChaincodeName>OCIFunction. La variabile routeData contiene metadati per tutti gli instradamenti creati nel gateway, inclusi il nome dell'instradamento, gli argomenti e l'eventuale presenza di argomenti facoltativi. Quando si aggiorna un endpoint nella variabile function_paths nel file terraform.tfvars, è necessario aggiornare anche la voce corrispondente nella variabile routeData nel file routes.go, come mostrato nell'esempio seguente.
var routeData = map[string]Route{
    "/activateCBDCAccount": {
        Args:           []string{"activateAccount", "orgId", "userId", "tokenId"},
        OptionalParams: true,
    },
}

Collezione Postman

Le raccolte Postman ora supportano il codice concatenato riservato e l'autenticazione OAuth 2.0. Per ulteriori informazioni, vedere Miglioramenti alle raccolte postman.

La raccolta Postman include endpoint e payload aggiornati per tutte le API. Il codice seguente mostra un payload di esempio.
{
    "orgId": "{{bc-org-id}}",
    "userId": "user1",
    "tokenType": "fungible",
    "applicationGroups": "[\"application_groups value\"]",
    "dailyLimits": "{\"max_daily_amount\":10000,\"max_daily_transactions\":100}",
    "endorsers": {{endorsers}}
}
La tabella seguente mostra le variabili di raccolta Postman.
Variabile Descrizione Valore predefinito
bc-admin-user L'utente amministrativo, che dispone del ruolo admin e può accedere a tutte le richieste POST. Per impostazione predefinita, questo utente è il chiamante di tutte le richieste POST nel codice concatenato. valore bc-admin-user
bc-admin-user-password Password dell'utente amministrativo. valore bc-admin-user-password
bc-org-id ID organizzazione predefinito in tutte le richieste POST in cui orgId è il nome del parametro valore bc-org-id
bc-user-id ID utente predefinito in tutte le richieste POST in cui userId è il nome del parametro valore bc-user-id
bc-token-id ID token predefinito in tutte le richieste POST in cui tokenId è il nome del parametro valore token bc
endorsers L'array di giranti elenca i pari livello specifici (ad esempio: peer1, peer2) per approvare questa transazione. ["org1-xyz-abc.blockchain.ocp.oraclecloud.com:20009", "org2-xyz-abc.blockchain.ocp.oraclecloud.com:20009"]
api-gateway-endpoint Endpoint di ogni richiesta, che funge da percorso di base per gli endpoint API wrapper.

Se sono presenti meno di 50 API, viene utilizzato un singolo endpoint. Se sono presenti più di 50 API, gli endpoint vengono generati in modo dinamico come api-gateway-endpoint1, api-gateway-endpoint2 e così via, in base al numero di API.

https://xyz.apigateway.region.oci.customer-oci.com/CBDC
bc-url URL proxy REST dell'istanza di Oracle Blockchain Platform. https://test-xyz-abc.blockchain.ocp.oraclecloud.com:7443/restproxy
access-token-url URL del token di accesso a Oracle Identity Cloud Service (IDCS). Ad esempio: <idcs_endpoint>/oauth/v1/token valore access-token-url
client-id ID client dell'istanza di Oracle Blockchain Platform. ID-cliente
client-secret Il segreto client dell'istanza di Oracle Blockchain Platform. client-secret
peer Questa variabile esiste solo per la raccolta riservata Chaincode wrapper API Postman, che richiede l'intestazione peer per tutte le API setter e getter. org-xyz-abc.blockchain.ocp.oraclecloud.com:20009

Dopo aver distribuito il package API wrapper, l'output della distribuzione delle risorse dello stack è un oggetto JSON contenente i valori dell'endpoint gateway. Se si generano più di 50 API, vengono generati più endpoint gateway, uno per ogni 50 API. È necessario aggiornare le variabili di raccolta Postman correlate a questi endpoint. Le variabili correlate all'endpoint nella raccolta Postman devono essere aggiornate con i valori appropriati dall'output della distribuzione del package API wrapper in Stack Resource Manager.

Tutte le API setter nella raccolta Postman API wrapper includono il parametro endorsers o sameOrgEndorser nel payload della richiesta. Le informazioni che specificano quali API richiedono il parametro sameOrgEndorser vengono definite nel parametro sameOrgEndorserOptionInWrapperAPI nel file .ochain.json nel codice concatenato. Per le API elencate in questo parametro, sameOrgEndorser sarà impostato su true nei payload. Tutte le altre API setter includeranno invece il parametro endorsers. L'esempio seguente mostra il parametro per il codice concatenato CBDC all'ingrosso.
"sameOrgEndorserOptionInWrapperAPI": ["addConversionRate","addTokenAdmin","addTokenAuditor","approveBurn","approveMint","burnTokens","createExchangePoolAccounts","deleteHistoricalTransactions","initializeCBDCToken","initializeExchangePoolUser","mintWithFundingExchangePool","rejectBurn","rejectMint","removeTokenAdmin","removeTokenAuditor","requestBurn","requestMint","updateCBDCToken","updateConversionRate"]
È possibile personalizzare il parametro sameOrgEndorserOptionInWrapperAPI nel file .ochain.json in base alle esigenze. Quando si generano le API wrapper, le API specificate includeranno il parametro sameOrgEndorser come true nei relativi payload.