Generare una raccolta Postman utilizzando Visual Studio Code

È possibile creare una raccolta Postman che includa payload di esempio per tutte le API del controller del codice concatenato.

Postman è uno strumento che è possibile utilizzare per utilizzare e testare le API REST. Il comando Genera crea una raccolta Postman basata sul codice concatenato generato automaticamente da un file di specifica dichiarativa. La raccolta Postman contiene i payload per tutti i metodi specificati nel file controller del codice concatenato. È possibile modificare i valori delle variabili nel file di raccolta Postman per effettuare chiamate API REST.

La raccolta Postman generata include valori predefiniti per tutte le API nel controller. Per ulteriori informazioni su Postman, vedere https://www.postman.com/. Dopo aver generato una raccolta Postman, è possibile importarla e utilizzarla direttamente modificando i valori predefiniti nel payload e nelle variabili.

Per generare una raccolta Postman per un progetto con codice concatenato in Visual Studio Code, attenersi alla procedura riportata di seguito.

  1. Selezionare il progetto codice concatenato nel riquadro Codici di catena.
  2. Fare clic con il pulsante destro del mouse sul nome del codice concatenato, quindi selezionare Genera raccolta Postman.
  3. Selezionare una posizione in cui salvare la raccolta Postman, quindi fare clic su Seleziona cartella di output.

Se la raccolta Postman specificata esiste già, viene richiesto se sovrascriverla.

Struttura raccolta Postman

La raccolta Postman generata include due tipi di richieste, richieste di richiamo e richieste di query:
  • Le richieste di richiamo includono tutte le operazioni di scrittura che utilizzano l'endpoint /transactions
  • Le richieste di query includono tutte le operazioni get che utilizzano l'endpoint /chaincode-queries

Per distinguere tra i metodi getter e non getter nelle API del controller, nei codici concatenati TypeScript viene utilizzato un decorator e nei codici concatenati Go viene utilizzato un commento. Se si definisce un metodo getter nel controller, è necessario utilizzare il decorator GetMethod per TypeScript o il commento GetMethod per Go, come illustrato nella tabella riportata di seguito.

TypeScript Vai
Ogni metodo getter dispone di un decorator GetMethod:
@GetMethod()
@Validator()
public async getAllTokenAdmins() {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ADMIN.getAllAdmins", "TOKEN");
  return await this.Ctx.ERC1155Admin.getAllAdmins();
}
Ogni metodo getter ha un blocco di commenti GetMethod:
/**
 * GetMethod
 */
func (t *Controller) GetAllTokenAdmins() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Admin.GetAllAdmins", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Admin.GetAllTokenAdmins()
}

Le raccolte Postman generate includono variabili con valori predefiniti, come illustrato nella tabella riportata di seguito.

Nome variabile Descrizione Valore predefinito Contesto
bc-url URL proxy REST dell'istanza di Oracle Blockchain Platform in cui viene distribuito il codice concatenato https://test-xyz-abc.blockchain.ocp.oraclecloud.com:7443/restproxy tutti i codici concatenati
bc-channel Il canale in cui viene distribuito il codice concatenato default tutti i codici concatenati
bc-admin-user Il nome dell'utente amministratore (un utente con il ruolo di amministratore che può accedere a tutte le richieste POST). Per impostazione predefinita, questo utente è il chiamante di tutte le richieste POST nel codice concatenato bc-admin-user value tutti i codici concatenati
bc-admin-password Password per l'utente amministratore bc-admin-password value tutti i codici concatenati
bc-timeout Il valore di timeout nel corpo di ogni richiesta POST per indicare l'intervallo di timeout 6000 tutti i codici concatenati
bc-sync Valore di sincronizzazione nel corpo di ogni richiesta POST per indicare se la richiesta è sincrona o asincrona true tutti i codici concatenati
bc-chaincode-name Il nome del codice concatenato, utilizzato in ogni richiesta POST chaincode name tutti i codici concatenati
bc-org-id Parametro orgId predefinito per tutte le richieste POST bc-org-id value solo codici concatenati token
bc-user-id Parametro userId predefinito per tutte le richieste POST bc-user-id value solo codici concatenati token
bc-token-id Parametro tokenId predefinito per tutte le richieste POST bc-token-id value solo codici concatenati token

In ogni richiesta generata vengono generati tutti i parametri con valori predefiniti. Le funzioni con parametri di struttura/classe avranno un oggetto segnaposto nel corpo della richiesta, come illustrato negli esempi riportati di seguito.

API con un parametro strutt/classe
{
    "chaincode": "{{bc-chaincode-name}}",
    "args": [
        "CreateArtCollectionToken",
        "{\"TokenId\":\"{{bc-token-id}}\",\"TokenDesc\":\"TokenDesc value\",\"TokenUri\":\"TokenUri value\",\"TokenMetadata\":{\"Painting_name\":\"Painting_name value\",\"Description\":\"Description value\",\"Image\":\"Image value\",\"Painter_name\":\"Painter_name value\"},\"Price\":999,\"On_sale_flag\":true}",
        "quantity value"
    ],
    "timeout": {{bc-timeout}},
    "sync": {{bc-sync}}
}
API senza un parametro strutt/classe
{
    "chaincode": "{{bc-chaincode-name}}",
    "args": [
        "CreateAccount",
        "{{bc-org-id}}",
        "example_minter",
        "true",
        "true"
    ],
    "timeout": {{bc-timeout}},
    "sync": {{bc-sync}}
}

Il valore predefinito per la maggior parte dei parametri API è parameter_name value, con alcune eccezioni. Gli esempi seguenti mostrano alcune delle eccezioni.

  • Il parametro dei filtri in GetAccountTransactionHistoryWithFilters:
    "{\"PageSize\":20,\"Bookmark\":\"\",\"StartTime\":\"2022-01-16T15:16:36+00:00\",\"EndTime\":\"2022-01-17T15:16:36+00:00\"}"
  • Il parametro dei filtri in GetSubTransactionsByIdWithFilters:
    "{\"PageSize\":20,\"Bookmark\":\"\}"

Una struttura o una classe ha valori predefiniti diversi, come illustrato nella tabella seguente:

Tipo di dati Valore predefinito
boolean/bool true
int/number 999
date 2022-01-16T15:16:36+00:00
other parameter_name value

Progetti token ERC-1155

Lo standard ERC-1155 include metodi comuni per i token fungibili e non fungibili. La raccolta Postman generata per un progetto ERC-1155 che utilizza token fungibili e non fungibili include due diverse richieste POST, una per ogni tipo di token, per questi metodi comuni. Se un progetto ERC-1155 utilizza solo token fungibili o non fungibili ma non entrambi i tipi, la raccolta Postman generata include solo una richiesta POST per questi metodi comuni. Nella tabella seguente viene illustrata l'API generata per il metodo AddRole.
  Gettoni fungibili Token non fungibili
Nome richiesta AddRole -For Fungible AddRole -For NonFungible
Corpo richiesta
{
    "chaincode": "{{bc-chaincode-name}}",
    "args": [
        "AddRole",
        "{{bc-org-id}}",
        "{{bc-user-id}}",
        "role value (for example, minter / burner)",
        "{\"TokenId\":\"{{bc-token-id}}\"}"
    ],
    "timeout": {{bc-timeout}},
    "sync": {{bc-sync}}
}
{
    "chaincode": "{{bc-chaincode-name}}",
    "args": [
        "AddRole",
        "{{bc-org-id}}",
        "{{bc-user-id}}",
        "role value (for example, minter / burner)",
        "{\"TokenName\":\"TokenName value\"}"
    ],
    "timeout": {{bc-timeout}},
    "sync": {{bc-sync}}
}