Génération de kits SDK pour une ressource d'API
Découvrez comment générer un kit SDK pour une API à partir d'une description d'API avec le service API Gateway afin de donner aux développeurs un accès par programmation aux services back-end.
Lorsque vous utilisez le service API Gateway, vous avez la possibilité de générer des kits SDK (kits de développement logiciel) pour une ressource d'API. Si vous utilisez la ressource d'API pour déployer une API sur une passerelle d'API, les kits SDK que vous générez donnent aux développeurs un accès par programmation à l'API. Pour faciliter l'intégration à l'API, vous pouvez générer des kits SDK pour un certain nombre de langages et de plates-formes, notamment :
- Android
- Java
- JavaScript
- SWIFT
- TypeScript
Une fois le kit SDK généré, vous pouvez télécharger un fichier ZIP contenant les ressources du kit SDK (bibliothèques client d'API, configurations et documentation) et le distribuer aux développeurs qui écrivent du code accédant à l'API.
Afin de générer un kit SDK pour une ressource d'API, vous devez avoir créé une description d'API pour la ressource d'API. Vous créez une description d'API en téléchargeant un fichier de description d'API (parfois appelé "spécification d'API") écrit dans un langage pris en charge. Actuellement, les spécifications OpenAPI Specification version 2.0 (anciennement Swagger Specification 2.0) et version 3.0 sont prises en charge. Pour plus d'informations sur les ressources d'API et les descriptions d'API, reportez-vous à Création d'une ressource d'API avec une description d'API.
La génération d'un kit SDK à l'aide du service API Gateway est facultative. Vous pouvez déployer une API sur une passerelle d'API sans générer de kit SDK. De même, vous pouvez fournir un accès par programmation à une API que vous avez déployée sur une passerelle d'API avec un kit SDK que vous avez créé dans un autre outil. Vous pouvez également utiliser le service API Gateway simplement pour générer un kit SDK à partir d'un fichier de description d'API, sans utiliser la ressource d'API associée afin de déployer une API sur une passerelle d'API.
Tenez compte des points suivants :
- Une ressource d'API peut comporter les éléments suivants :
- Aucun kit SDK
- des kits SDK pour le même langage ou la même plate-forme
- un ou plusieurs SDK pour différentes langues ou plates-formes
- Vous ne pouvez générer qu'un tout nouveau SDK. Chaque kit SDK généré possède un identificateur unique (OCID). Vous ne pouvez pas "re-générer" un kit SDK existant qui a déjà été généré (bien que vous puissiez modifier le nom d'affichage d'un kit SDK existant).
- Il est de votre responsabilité de gérer les SDK générés. Si vous téléchargez une version mise à jour d'un fichier de description d'API à partir duquel vous avez précédemment généré un kit SDK, aucun nouveau kit SDK n'est généré automatiquement. Vous devez décider de générer ou non un nouveau SDK. Si vous générez un nouveau kit SDK, vous devez décider de supprimer le kit SDK existant ou de le conserver.
- Vous ne pouvez générer un kit SDK que si un fichier de description d'API téléchargé n'a pas échoué aux vérifications de validation. Vous pouvez générer un kit SDK si le fichier de description d'API téléchargé a réussi les vérifications de validation avec des avertissements. Toutefois, nous vous recommandons de résoudre les avertissements avant de générer le kit SDK.
Afin de générer un kit SDK pour une ressource d'API à partir d'un fichier de description d'API téléchargé vers le serveur, à l'aide de la console, procédez comme suit :
- Sur la page de liste API, sélectionnez la ressource d'API pour laquelle générer un kit SDK. Si vous avez besoin d'aide pour trouver la page de liste, reportez-vous à Liste des ressources d'API.
- Si vous n'avez pas encore téléchargé de fichier de description d'API, suivez les instructions fournies dans Création d'une ressource d'API avec une description d'API afin de créer une ressource d'API et d'indiquer un fichier de description d'API à télécharger.
- Sur la page Détails de l'API, sélectionnez Kits SDK dans la liste Ressources, puis Créer un kit SDK.
- Dans la boîte de dialogue Créer un kit SDK, procédez comme suit :
- Indiquez l'une des valeurs suivantes :
- Nom : nom du nouveau kit SDK. Evitez de saisir des informations confidentielles.
- Langage de programmation : langage de programmation ou plate-forme pour lequel vous voulez générer un kit SDK à partir du fichier de description d'API téléchargé.
- Propriétés <Language> : selon le langage de programmation ou la plate-forme que vous choisissez, indiquez des valeurs pour les propriétés propres à la langue ou à la plate-forme. Les propriétés requises sont toujours affichées. Sélectionnez Afficher les propriétés facultatives pour afficher et saisir des valeurs pour des propriétés facultatives supplémentaires.
- (Facultatif) Sélectionnez Afficher les options avancées et indiquez éventuellement :
- Balises : si vous avez les droits d'accès nécessaires pour créer une ressource, vous disposez également de droits d'accès nécessaires pour lui appliquer des balises à format libre. Pour appliquer une balise defined, vous devez disposer des droits d'accès permettant d'utiliser l'espace de noms de balise. Pour plus d'informations sur le balisage, reportez-vous à Balises de ressource. Si vous n'êtes pas certain d'appliquer des balises, ignorez cette option ou demandez à un administrateur. Vous pouvez appliquer des balises ultérieurement.
- Sélectionnez Créer pour générer le kit SDK.
Le kit SDK est généré. La génération du kit SDK peut prendre quelques minutes.
Lorsque le kit SDK a été généré, la page Détails du kit SDK affiche le langage de programmation ou la plate-forme que vous avez indiqués pour le kit SDK (et les valeurs des propriétés obligatoires et facultatives).
- Indiquez l'une des valeurs suivantes :
- Sélectionnez Télécharger le kit SDK pour obtenir un fichier ZIP contenant les ressources de kit SDK (bibliothèques client d'API, configurations et documentation) générées à partir du fichier de description d'API de la ressource d'API.
Une fois le kit SDK généré pour la ressource d'API, vous pouvez distribuer le fichier ZIP aux développeurs qui écrivent du code accédant à l'API.
Afin de générer un kit SDK pour une ressource d'API à partir d'un fichier description d'API téléchargé vers le serveur, à l'aide de l'interface de ligne de commande, procédez comme suit :
- Configurez votre environnement client de façon à pouvoir utiliser l'interface de ligne de commande (Configuration de l'environnement client pour utiliser l'interface de ligne de commande pour le développement de passerelle d'API).
-
Ouvrez une invite de commande et exécutez
oci api-gateway sdk-language-type
pour connaître les langages de programmation et les plates-formes pour lesquels vous pouvez générer un kit SDK :oci api-gateway sdk-language-type list --compartment-id <ocid>
Vous voyez les langages de programmation et les plates-formes pris en charge, ainsi que les paramètres obligatoires et facultatifs à utiliser avec chacun d'eux.
- Exécutez
oci api-gateway sdk create
pour générer le kit SDK :oci api-gateway sdk create --target-language "<language>" --api-id <api-ocid> --parameters '{"<first-parameter-name>": "<first-parameter-value>", "<second-parameter-name>": "<second-parameter-value>"}'
où :
<language>
est le langage de programmation ou la plate-forme pour lequel générer un kit SDK à partir du fichier de description d'API téléchargé.<api-ocid>
est l'OCID de la ressource d'API pour laquelle générer le nouveau kit SDK.--parameters '{"<first-parameter-name>": "<first-parameter-value>", "<second-parameter-name>": "<second-parameter-value>"}'
est le nom et la valeur de tous les paramètres obligatoires et/ou facultatifs à définir pour le langage de programmation ou la plate-forme que vous avez choisi.
Par exemple :
-
oci api-gateway sdk create --target-language "JAVASCRIPT" --api-id ocid1.apigatewayapi.oc1..aaaaaaa3______psq
-
oci api-gateway sdk create --target-language "SWIFT" --api-id ocid1.apigatewayapi.oc1..aaaaaaa3______psq --parameters '{"projectName": "Hello World", "apiNamePrefix": "hello"}'
La réponse à la commande inclut les éléments suivants :
- OCID du kit SDK.
- Etat de cycle de vie (par exemple, SUCCEEDED, FAILED).
- ID de la demande de travail utilisée pour créer le kit SDK (les détails des demandes de travail sont disponibles pendant sept jours après leur fin, leur annulation ou leur échec).
Pour que la commande attende que le kit SDK soit créé (ou que la demande ait échoué) avant de renvoyer le contrôle, incluez l'un des paramètres suivants ou les deux :
--wait-for-state SUCCEEDED
--wait-for-state FAILED
Par exemple :
oci api-gateway sdk create --target-language javascript --api-id ocid1.apigatewayapi.oc1..aaaaaaa3______psq --wait-for-state SUCCEEDED
Vous ne pouvez pas utiliser le kit SDK tant que la demande de travail ne l'a pas créée.
-
(Facultatif) Pour afficher le statut de la demande de travail qui crée le kit SDK, saisissez ce qui suit :
oci api-gateway work-request get --work-request-id <work-request-ocid>
-
(Facultatif) Pour afficher les journaux de la demande de travail qui crée le kit SDK, saisissez ce qui suit :
oci api-gateway work-request-log list --work-request-id <work-request-ocid>
-
(Facultatif) Si la demande de travail qui crée le kit SDK échoue et que vous voulez consulter les journaux d'erreurs, procédez comme suit :
oci api-gateway work-request-error --work-request-id <work-request-ocid>
Pour plus d'informations sur l'utilisation de l'interface de ligne de commande, reportez-vous à Interface de ligne de commande (CLI). Afin d'obtenir la liste complète des indicateurs et des options disponibles pour les commandes de l'interface de ligne de commande, reportez-vous à Aide relative à l'interface de ligne de commande.
Exécutez les commandes suivantes :
- Opération CreateSdk permettant de créer un kit SDK pour une ressource d'API à partir d'un fichier de description d'API téléchargé vers le serveur.
- Opération ListSdks permettant de répertorier les kits SDK qui ont déjà été générés.
- Opération GetSdk permettant de visualiser les détails d'un kit SDK existant.
- Opération UpdateSdk permettant de modifier le nom d'affichage d'un kit SDK existant.
- Opération DeleteSdk permettant de supprimer un kit SDK.
- Opération ListSdkLanguageTypes permettant de répertorier les langages de programmation et les plates-formes pour lesquels vous pouvez générer un kit SDK, ainsi que tous les paramètres obligatoires et facultatifs.
Exemples d'utilisation de kits SDK générés
Après avoir utilisé API Gateway pour générer un kit SDK à partir du fichier de description d'API d'une ressource d'API, vous pouvez télécharger et installer le kit SDK, puis l'utiliser pour appeler l'API déployée sur une passerelle d'API.
Les étapes de téléchargement, d'installation et d'utilisation d'un kit SDK généré dépendent du langage du kit SDK et des fonctionnalités de l'API.
Les exemples de cette section supposent qu'un SDK a été généré pour une API de blog dans chacune des différentes langues. Utilisez les exemples comme guides, que vous pouvez étendre et adapter pour répondre à vos propres besoins.
Exemple 1 : utilisation d'un kit SDK Android généré pour une ressource d'API
Outils et versions utilisés dans cet exemple :
- Gradle 6.5
- Maven 3.6.3
- Android Studio 4.1.2
Pour utiliser un kit SDK Android généré par API Gateway à partir du fichier de description d'API d'une ressource d'API, procédez comme suit :
- Téléchargez le fichier ZIP contenant le kit SDK Android généré par API Gateway, puis extrayez son contenu.
- Dans le répertoire racine extrait du fichier ZIP, installez le kit SDK généré dans le référentiel Maven local en exécutant la commande suivante :
mvn clean install
-
Décidez quel projet Android utilisera le SDK Android généré. Ouvrez un projet Android existant dont Gradle est le gestionnaire de packages ou créez un nouveau projet Android comme suit :
- Ouvrez Android Studio. Sous Fichier, accédez à Nouveau et sélectionnez Nouveau projet.
- Sélectionnez Aucune activité, puis Suivant.
- Pour Langue, sélectionnez Java et Terminer.
- Mettez à jour le fichier build.gradle du module pour ajouter le kit SDK généré en tant que dépendance. Par exemple :
plugins { id 'com.android.application' } android { compileSdkVersion 29 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.example.myapplication" minSdkVersion 21 targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // 2) Connect JUnit 5 to the runner testInstrumentationRunnerArgument "runnerBuilder", "de.mannodermaus.junit5.AndroidJUnit5Builder" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } apply plugin: "de.mannodermaus.android-junit5" dependencies { implementation 'com.android.support:multidex:1.0.3' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation("com.mock:test-project:1.0.1") }
test-project
a été ajouté sousdependencies
. - Exécutez la construction du projet sur Android Studio.
- Une fois la construction terminée, importez les classes SDK générées et utilisez-les dans une ou plusieurs des classes Java du projet Android. Par exemple :
package com.example.myapplication; import android.annotation.SuppressLint; import android.content.Context; import android.os.AsyncTask; import android.widget.Toast; import com.mock.testproject.api.UserV1; import com.mock.testproject.api.UsersApi; public class NetworkTask extends AsyncTask<String,String,String> { @SuppressLint("StaticFieldLeak") private final Context context; public NetworkTask(Context context) { this.context = context; } @Override protected String doInBackground(String... strings) { try{ UsersApi usersApi = new UsersApi(); usersApi.setBasePath("https://0eff7c6c85cc.ngrok.io"); UserV1 a = usersApi.getUsersUsername("a"); return a.toString(); }catch (Exception e){ e.printStackTrace(); return e.getMessage(); } } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Toast.makeText(context, s, Toast.LENGTH_LONG).show(); } }
Utilisez l'exemple ci-dessus comme guide, que vous pouvez étendre et adapter pour répondre à vos propres exigences.
Exemple 2 : utilisation d'un kit SDK Java généré pour une ressource d'API
Outils et versions utilisés dans cet exemple :
- Maven 3.6.3
- Java 1.8.0
Pour utiliser un kit SDK Java généré par API Gateway à partir du fichier de description d'API d'une ressource d'API, procédez comme suit :
- Téléchargez le fichier ZIP contenant le kit SDK Java généré par API Gateway, puis extrayez son contenu.
- Dans le répertoire racine extrait du fichier ZIP, installez le kit SDK généré dans le référentiel Maven local en exécutant la commande suivante :
mvn clean install
- Déterminez le projet Maven qui utilisera le kit SDK Java généré. Mettez à jour un projet Maven existant ou créez un nouveau projet Maven en exécutant :
mvn -B archetype:generate -DarchetypeGroupdId=org.apache.maven.archetypes -DgroupId=examples.com.testApp -DartifactId=test-maven-project
- Mettez à jour le fichier pom.xml du projet Maven pour ajouter le kit SDK généré en tant que dépendance. Par exemple :
<dependency> <groupId>com.mock.test</groupId> <artifactId>integration-java</artifactId> <version>1.0.0</version> <scope>compile</scope> </dependency>
- Dans le répertoire racine du projet Maven, exécutez :
mvn clean install
- Une fois l'installation de Maven terminée, importez les classes SDK générées et utilisez-les dans le projet Maven. Par exemple :
import com.mock.test.integration.ApiClient; import com.mock.test.integration.ApiException; import com.mock.test.integration.api.UsersApi; import com.mock.test.integration.model.UserV1; public class SdkTest { private String basePath; private UsersApi usersApi; private UsersApi loggedInUsersApi; public void setUpAndListUsers(){ ApiClient loggedInClient = new ApiClient(); loggedInClient.setPassword("password"); loggedInClient.setUsername("username"); loggedInUsersApi = new UsersApi(loggedInClient); List<UserV1> users = loggedInUsersApi.getUsers(); } }
Utilisez l'exemple ci-dessus comme guide, que vous pouvez étendre et adapter pour répondre à vos propres exigences.
Exemple 3 : utilisation d'un kit SDK JavaScript généré pour une ressource d'API
Outils et versions utilisés dans cet exemple :
- Npm 6.14.0
Pour utiliser un kit SDK JavaScript généré par la passerelle d'API à partir du fichier de description d'API d'une ressource d'API, procédez comme suit :
- Téléchargez le fichier ZIP contenant le kit SDK JavaScript généré par API Gateway, puis extrayez son contenu.
- Dans le répertoire racine extrait du fichier ZIP, exécutez la commande suivante :
npm install
npm link
- Dans le répertoire racine d'un projet npm existant, exécutez :
Par exemple :npm link <path_to_javascript_client_dir>
npm link "/Users/ajay.d.dubey/Downloads/Simple API overview_JAVASCRIPT_v26544725374050339058"
- Dans le fichier .js à partir duquel appeler les services, importez et utilisez le kit SDK généré. Par exemple :
const Blog = require("blog"); const apiClient = new Blog.ApiClient(); apiClient.defaultHeaders = { authorization: "audio/basic" }; apiInstance = new Blog.UsersApi(apiClient); //get user apiInstance.getUsersUsername( "046b6c7f-0b8a-43b9-b35d-6489e6daee91", (error, data, response) => { if (error) throw error; console.log(response.statusCode); console.log(response) } ); //put user let opts = { userV1: new Blog.UserV1( "Test", "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "password", "a@b.com" ), }; apiInstance.putUsersUsername( "046b6c7f-0b8a-43b9-b35d-6489e6daee91", opts, (error, data, response) => { if (error) throw error; console.log(response.statusCode); console.log(response) } );
Dans cet exemple, le nom du kit SDK généré est
blog
. Recherchez le nom du kit SDK généré dans le fichier package.json extrait.
Utilisez l'exemple ci-dessus comme guide, que vous pouvez étendre et adapter pour répondre à vos propres exigences.
Exemple 4 : utilisation d'un kit SDK Swift généré pour une ressource d'API
Outils et versions utilisés dans cet exemple :
- XCode 12,4
- Swift 5.3.1
- CocoaPods 1.10.1
Pour utiliser un kit SDK Swift généré par API Gateway à partir du fichier de description d'API d'une ressource d'API, procédez comme suit :
- Téléchargez le fichier ZIP contenant le kit SDK Swift généré par API Gateway et extrayez son contenu.
- Déterminez le projet XCode qui utilisera le kit SDK Swift généré. Mettez à jour un projet XCode existant ou créez un projet XCode comme suit :
- Ouvrez XCode. Sous Fichier, accédez à Nouveau et sélectionnez Projet.
- Sélectionnez App, puis Suivant.
- Pour Langue, sélectionnez Swift et Suivant.
- Indiquez un emplacement pour le projet et sélectionnez Créer pour créer le projet XCode.
- Si le répertoire racine du projet XCode ne contient pas déjà de fichier de pod, créez un fichier de pod en exécutant la commande suivante :
pod init
- Mettez à jour le fichier de pod pour ajouter une référence au kit SDK généré. Par exemple :
target 'test-project-3' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for test-project-3 pod 'mysdk', :path => '/Users/ajay.d.dubey/workspace-2/swift/Blog_SWIFT_1.0.01209182890182739216' end
- Dans le répertoire racine du projet XCode, exécutez :
pod install
Exemple de sortie :
~/workspace-2/swift/test-project-3 on main ?1 ❯ pod install took 1m 4s at 09:50:31 Analyzing dependencies Downloading dependencies Installing mysdk (1.0.0) Generating Pods project Integrating client project [!] Please close any current Xcode sessions and use `test-project-3.xcworkspace` for this project from now on. Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed. [!] Automatically assigning platform `iOS` with version `14.4` on target `test-project-3` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
- Fermez toutes les instances ouvertes de XCode.
- Dans le répertoire racine du projet XCode, ouvrez le fichier .xcworkspace pour voir le pod.
- Mettez à jour n'importe quel fichier SWIFT pour importer le pod et commencer à utiliser le kit SDK généré. Par exemple, mettez à jour le fichier ViewController.swift pour importer le pod mysdk comme suit :
import UIKit import mysdk class ViewController: UIViewController { override func viewDidLoad() { mysdkAPI.credential = URLCredential.init(user: "username", password: "password", persistence: .permanent) mysdkAPI.customHeaders = ["Content-Type":"application/json","Authorization":"Basic 1234"] mysdk.UsersAPI.getUsers(completion: getUsers) mysdk.UsersAPI.getUsersUsername(username: "046B6C7F-0B8A-43B9-B35D-6489E6DAEE91", completion: responseUserUsername) } func getUsers(users :[mysdk.UserV1]?, error:Error?) -> Void{ print("Attempting fetching user details:") print(users) } func responseUserUsername(user :mysdk.UserV1?, error:Error?){ print("Attempting fetching user with username:") print("Successful Request") print (user) }
Utilisez l'exemple ci-dessus comme guide, que vous pouvez étendre et adapter pour répondre à vos propres exigences.
Exemple 5 : utilisation d'un kit SDK TypeScript généré pour une ressource d'API
Outils et versions utilisés dans cet exemple :
- fil 1.22.10
Cet exemple montre comment créer et utiliser un kit SDK TypeScript généré à l'aide du fil. Si vous voulez utiliser un kit SDK TypeScript généré à l'aide de NPM, suivez les étapes permettant d'utiliser un kit SDK JavaScript généré à l'aide de NPM présentées dans l'Exemple 3 : utilisation d'un kit SDK JavaScript généré pour une ressource d'API.
Pour utiliser un kit SDK TypeScript généré par la passerelle d'API à partir du fichier de description d'API d'une ressource d'API, procédez comme suit :
- Téléchargez le fichier ZIP contenant le kit SDK TypeScript généré par API Gateway, puis extrayez son contenu.
- Dans le répertoire racine extrait du fichier ZIP, exécutez la commande suivante :
yarn install
yarn run build
yarn link
- Dans le répertoire racine du projet que vous souhaitez utiliser le kit SDK généré :
- Exécution :
yarn link <project-name>
où
<project name>
est le nom du kit SDK généré. Recherchez le nom du kit SDK généré dans le fichier package.json extrait. Par exemple :yarn link test-project
- Exécution :
yarn install
- Exécution :
- Mettez à jour le fichier ts du projet que vous souhaitez utiliser le kit SDK généré. Par exemple :
const Blog = require("blog"); const expect = require("chai").expect; let apiInstance; let apiInstanceWithoutHeader; before(function () { const apiClient = new Blog.ApiClient(); apiClient.defaultHeaders = { authorization: "audio/basic" }; apiInstance = new Blog.UsersApi(apiClient); apiInstanceWithoutHeader = new Blog.UsersApi(); }); describe("UsersApi", function () { it("should call add delete username successfully", function (done) { apiInstance.deleteUsersUsername( "046b6c7f-0b8a-43b9-b35d-6489e6daee91", (error, data, response) => { if (error) throw error; console.log(response.statusCode); console.log(response) expect(response.statusCode).to.equal(204); expect(data).to.equal(null); done(); } ); }); it("should update user details successfully", function (done) { let opts = { userV1: new Blog.UserV1( "Test", "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "password", "a@b.com" ), }; apiInstance.putUsersUsername( "046b6c7f-0b8a-43b9-b35d-6489e6daee91", opts, (error, data, response) => { if (error) throw error; expect(response.statusCode).to.equal(202); expect(data).to.not.null; done(); } ); }); });
Utilisez l'exemple ci-dessus comme guide, que vous pouvez étendre et adapter pour répondre à vos propres exigences.