Générer des API de wrapper à l'aide de la CLI

La version améliorée de Blockchain App Builder inclut la commande generateFnAPI, qui génère des API de wrapper pour toutes les API de contrôleur dans un projet de code chaîne.

Usage: ochain generateFnAPI [options]
Generation of WrapperAPI package for controller functions
Options:
-h, --help                  Output command usage information
-D, --debug                 Enable debug logging
-m, --mapping <mapping>     Info about functions endpoints mapping is mandatory.
-c, --config <config>       Info about configuration variables is mandatory.
-a, --all <all>             Generate the wrapperAPI package for entire controller functions
-p, --project <path>        Path to the Ochain chaincode project to generate the WrapperAPI package. If not specified, it defaults to current directory.
L'exemple suivant montre comment générer des API de wrapper pour un projet de code chaîne local.
ochain generateFnAPI --mapping <info object about function mapping> --config <info about the config variables> --project <Path to the Ochain chaincode project> --out <Path to the generated postman collection>

Lorsque vous exécutez la commande generateFnAPI, vous êtes invité à écraser les packages d'API de wrapper précédents qui existent à l'emplacement de sélection.

API Gateway limite à 50 le nombre de routages qui peuvent être créés dans un seul déploiement. Si vous essayez d'utiliser la commande generateFnAPI pour générer plus de 50 API de wrapper, vous êtes invité à créer plusieurs passerelles. La création de plusieurs passerelles avec le même préfixe de chemin de déploiement conserve un chemin de base cohérent sur toutes les adresses d'API de wrapper. Si vous choisissez de ne pas créer plusieurs passerelles, la génération de l'API de wrapper est annulée. Vous pouvez utiliser le paramètre gateway_ocids comme décrit dans les informations suivantes pour réutiliser des passerelles existantes.

Options de commande

-m, --mapping <mapping>
L'option de mise en correspondance définit la configuration des API de contrôleur, en spécifiant les noms d'adresse et les API de contrôleur nécessitant la génération d'API de wrapper. La carte est un objet JSON de paires clé/valeur, où la clé est le nom de l'API de contrôleur et la valeur est l'adresse personnalisée à associer à cette API de contrôleur.

L'exemple suivant présente un mapping pour le code chaîne qui utilise la norme étendue Token Taxonomy Framework.

ochain generateFnAPI --mapping '{"addConversionRate":"/addConversionRateTest", "addTokenAdmin": "/addTokenAdminTest", "approveBurn": "/approveBurnTest", "createAccount": "/createAccount", "associateTokenToAccount": "/associateTokenToAccountTest", "getAllOrgAccounts": "/getAllOrgAccounts"}' --config <info about the config variables> --project <Path to the Ochain chaincode project> --out <Path to the generated postman collection>
-c, --config <config>
L'option de configuration est utilisée pour transmettre les variables de configuration requises pour le package d'API wrapper. Il s'agit d'un objet JSON de paires clé/valeur, où la clé est le nom de la variable de configuration et la valeur la valeur de la variable de configuration. Toutes les variables de configuration à l'exception de gateway_ocids sont obligatoires pour générer un package d'API de wrapper. Si l'une des variables suivantes, sauf gateway_ocids, n'est pas transmise à la commande, la génération de l'API de wrapper échoue. Vous pouvez modifier ces valeurs après avoir créé l'API de wrapper en extrayant le fichier .zip de l'API de wrapper.
Nom de variable Description
compartment_ocid OCID du compartiment dans Oracle Cloud Infrastructure (OCI).
compartment_name Nom du compartiment OCI.
identity_domain Domaine d'identité à utiliser.
blockchain_channel Nom du canal Oracle Blockchain Platform sur lequel le code chaîne est déployé.
blockchain_url URL Oracle Blockchain Platform associée au déploiement de code chaîne.
blockchain_chaincode Nom du code chaîne pour lequel générer des API de wrapper.
blockchain_sync Valeur de synchronisation à inclure dans la charge utile pour les appels d'API.
blockchain_timeout Valeur de délai d'expiration à inclure dans la charge utile pour les appels d'API.
vcn_display_name Nom d'affichage du réseau cloud virtuel OCI.
application_display_name Nom d'affichage de l'application OCI.
gateway_display_name Nom d'affichage de API Gateway.
deployment_display_name Nom d'affichage du déploiement dans API Gateway.
deployment_path_prefix Préfixe de chemin de déploiement dans API Gateway, qui indique le chemin où les routages sont déployés. La variable deployment_path_prefix doit commencer par une barre oblique (/).
ocir_repo_name Nom du référentiel OCI Registry. La variable ocir_repo_name doit être composée de lettres minuscules.
policy_name Nom de la stratégie qui permet une gestion contrôlée et un accès aux API via des droits d'accès définis pour les groupes et les compartiments au sein de l'organisation
gateway_ocids Objet JSON d'identificateurs Oracle Cloud (OCID) à réutiliser pour les passerelles d'API existantes. Vous devez indiquer une passerelle pour 50 API de wrapper. Si vous n'indiquez pas de paramètre gateway_ocids, la commande crée des passerelles d'API.

L'exemple suivant présente une commande pour le code chaîne qui utilise la norme étendue Token Taxonomy Framework.

ochain generateFnAPI -m '{"addConversionRate":"/addConversionRateTest", "addTokenAdmin": "/addTokenAdminTest", "approveBurn": "/approveBurnTest", "createAccount": "/createAccount", "associateTokenToAccount": "/associateTokenToAccountTest", "getAllOrgAccounts": "/getAllOrgAccounts"}' -c '{"compartment_ocid": "compartment_ocid value", "compartment_name": "compartment_name value", "identity_domain" : "OracleIdentityCloudService", "blockchain_channel": "default", "blockchain_url": "blockchain_url value", "blockchain_chaincode": "blockchain_chaincode value", "blockchain_sync": true, "blockchain_timeout": 6000, "vcn_display_name": "vcn_display_name value", "application_display_name": "application_display_name value", "gateway_display_name": "gateway_display_name value", "deployment_display_name": "deployment_display_name value", "deployment_path_prefix": "deployment_path_prefix value", "ocir_repo_name": "ocir_repo_name value", "policy_name": "policy_name value"}'

L'exemple suivant illustre une commande qui utilise le paramètre gateway_ocids.

ochain generateFnAPI -m '{"addConversionRate":"/addConversionRateTest", "addTokenAdmin": "/addTokenAdminTest"}' -c '{"compartment_ocid":"ocid1.compartment.oc1..xxxx","compartment_name":"MyCompartment","identity_domain":"OracleIdentityCloudService","blockchain_channel":"default","blockchain_url":"https://blockchain-url","blockchain_chaincode":"my_chaincode","blockchain_sync":true,"blockchain_timeout":6000,"vcn_display_name":"myVCN","application_display_name":"myApp","gateway_display_name":"myGateway","deployment_display_name":"myDeployment","deployment_path_prefix":"myprefix","ocir_repo_name":"myRepo","policy_name":"myPolicy","gateway_ocids":"{\"1\":\"ocid1.apigateway.oc1.xxx\",\"2\":\"ocid1.apigateway.oc1.yyy\"}"}'
-a, --all <all>
L'option all génère une API de wrapper pour toutes les API de contrôleur définies dans le code chaîne. Si true, cette option remplace l'option de mise en correspondance. Une adresse par défaut est affectée à chaque API de wrapper, qui correspond au nom de l'API. Si vous indiquez l'option all, vous devez toujours fournir un objet JSON ({}) vide pour l'option de mapping.

L'exemple suivant présente un mapping pour le code chaîne qui utilise la norme étendue Token Taxonomy Framework.

ochain generateFnAPI -m '{}' -c '{"compartment_ocid": "compartment_ocid value", "compartment_name": "compartment_name value", "identity_domain" : "OracleIdentityCloudService", "blockchain_channel": "default", "blockchain_url": "blockchain_url value", "blockchain_chaincode": "blockchain_chaincode value", "blockchain_sync": true, "blockchain_timeout": 6000, "vcn_display_name": "vcn_display_name value", "application_display_name": "application_display_name value", "gateway_display_name": "gateway_display_name value", "deployment_display_name": "deployment_display_name value", "deployment_path_prefix": "deployment_path_prefix value", "ocir_repo_name": "ocir_repo_name value", "policy_name": "policy_name value"}' -a true