API wrapper

La versione avanzata di Blockchain App Builder può generare API wrapper per API Gateway, che supportano endpoint dedicati per ogni metodo chaincode.

Un'API wrapper è un livello di astrazione su un endpoint di Oracle Blockchain Platform. Le API wrapper supportano la configurazione di parametri comuni e nomi di endpoint specifici delle API, che semplificano l'utilizzo e la chiarezza.

Nella versione base di Oracle Blockchain Platform, un endpoint API richiede parametri che includono il nome del codice concatenato, i valori di timeout e sincronizzazione, gli argomenti (incluso il nome del metodo), il nome del canale e l'URL dell'istanza. Questi parametri devono essere passati con ogni richiamo. Poiché la maggior parte di questi parametri è comune a tutti i metodi, è possibile utilizzare la funzionalità API wrapper per creare un endpoint per ogni metodo, che viene quindi richiamato utilizzando solo i parametri del metodo. Invece di un endpoint comune, una transazione o una query, è possibile disporre di un nome endpoint personalizzato per ogni metodo. Mentre gli endpoint API in Oracle Blockchain Platform utilizzano le richieste POST, le API wrapper supportano sia le richieste POST che GET. Puoi anche aggiungere un ulteriore livello di autenticazione con le API wrapper utilizzando il meccanismo di autenticazione Gateway API.

L'esempio riportato di seguito mostra l'API del metodo createAccount in Oracle Blockchain Platform.

Endpoint: https://blockchain.example.com:7443/restproxy/api/v2/channels/default/transactions

{
    "chaincode": "{{bc-chaincode-name}}",
    "args": [
        "createAccount",
        "{{bc-org-id}}",
        "{{bc-user-id}}",
        "fungible",
        "{\"max_daily_amount\":10000,\"max_daily_transactions\":100}"
    ],
    "timeout": {{bc-timeout}},
    "sync": {{bc-sync}}
}

Se si configurano le API wrapper, è possibile effettuare la stessa chiamata di metodo come mostrato nell'esempio riportato di seguito.

Endpoint: https://apigateway.example.com/appbuilder/createAccount

{
    "orgId": "{{bc-org-id}}",
    "userId": "user1",
    "tokenType": "fungible",
    "dailyLimits": "{\"max_daily_amount\":10000,\"max_daily_transactions\":100}",
}