Generación de SDK para un recurso de API
Descubra cómo generar un SDK para una API a partir de una descripción de API con el servicio API Gateway para proporcionar a los desarrolladores acceso mediante programación a los servicios de backend.
Al utilizar el servicio de gateway de API, tiene la opción de generar SDK (kit de desarrollo de software) para un recurso de API. Si utiliza el recurso de API para desplegar una API en un gateway de API, los SDK que genera proporcionan a los desarrolladores acceso mediante programación a la API. Para facilitar la integración con la API, puede generar SDK para una serie de lenguajes y plataformas, incluidos:
- Android
- Java
- JavaScript
- Swift
- TypeScript
Una vez generado un SDK, puede descargar un archivo zip que contiene los recursos del SDK (bibliotecas, configuraciones y documentación del cliente de API) y distribuirlo a los desarrolladores que escriben código que acceden a la API.
Para generar un SDK para un recurso de API, debe haber creado una descripción de API para el recurso de API. Para crear una descripción de API, cargue un archivo de descripción de API (a veces denominado "especificación de API" o "especificación de API") escrito en un lenguaje soportado. Actualmente, están soportadas la versión 2.0 de la especificación de OpenAPI (anteriormente la especificación de Swagger 2.0) y la versión 3.0. Para obtener más información sobre los recursos de API y las descripciones de la API, consulte Creación de un recurso de API con una descripción de la API.
La generación de un SDK mediante el servicio API Gateway es opcional. Puede desplegar una API en un gateway de API sin generar un SDK. Del mismo modo, puede proporcionar acceso programático a una API que haya desplegado en un gateway de API con un SDK que haya creado en una herramienta diferente. También puede utilizar el servicio de gateway de API solo para generar un SDK a partir de un archivo de descripción de API, sin utilizar el recurso de API asociado para desplegar una API en un gateway de API.
Tenga en cuenta que:
- Un recurso de API puede tener:
- SDK cero
- uno o más SDK para el mismo idioma o plataforma
- uno o más SDK para diferentes lenguajes o plataformas
- Solo puede generar un SDK completamente nuevo. Cada SDK generado tiene un identificador único (OCID). No puede "volver a generar" un SDK existente que ya se ha generado (aunque puede cambiar el nombre mostrado de un SDK existente).
- Es su responsabilidad gestionar los SDK generados. Si carga una versión actualizada de un archivo de descripción de API desde el que ha generado previamente un SDK, no se genera un nuevo SDK automáticamente. Debe decidir si desea generar o no un nuevo SDK. Si genera un nuevo SDK, debe decidir si desea suprimir el SDK existente o conservarlo.
- Solo puede generar un SDK si un archivo de descripción de API cargado no ha fallado las comprobaciones de validación. Tenga en cuenta que puede generar un SDK si el archivo de descripción de API cargado ha pasado comprobaciones de validación con advertencias. Sin embargo, le recomendamos que resuelva las advertencias antes de generar el SDK.
Para generar un SDK para un recurso de API a partir de un archivo de descripción de API cargado, utilice la consola:
- En la página de lista API, seleccione el recurso de API para el que desea generar un SDK. Si necesita ayuda para buscar la página de lista, consulte Listado de recursos de API.
- Si aún no ha cargado un archivo de descripción de la API, siga las instrucciones de Creación de un recurso de API con una descripción de la API para crear un recurso de API y especificar un archivo de descripción de la API para cargar.
- En la página Detalles de API, seleccione SDK en la lista Recursos y, a continuación, seleccione Crear SDK.
- En el cuadro de diálogo Crear SDK:
- Especifique:
- Nombre: el nombre del nuevo SDK. Evite introducir información confidencial.
- Lenguaje de programación: lenguaje o plataforma de programación para los que desea generar un SDK a partir del archivo de descripción de API cargado.
- <Language> Properties: según el lenguaje de programación o la plataforma que elija, especifique valores para propiedades específicas del lenguaje o de la plataforma. Las propiedades necesarias siempre se muestran. Seleccione Mostrar Propiedades Opcionales para ver e introducir valores para propiedades opcionales adicionales.
- (Opcional) Seleccione Mostrar opciones avanzadas y, opcionalmente, especifique:
- Etiquetas: si tiene permisos para crear un recurso, también tiene permisos para aplicar etiquetas de formato libre a ese recurso. Etiquetas Para aplicar una etiqueta definida, debe tener permisos para utilizar el espacio de nombres de etiqueta. Para obtener más información sobre el etiquetado, consulte Etiquetas de recursos. Si no está seguro de si desea aplicar etiquetas, omita esta opción o pregunte a un administrador. Puede aplicar etiquetas más tarde.
- Seleccione Crear para generar el nuevo SDK.
Se genera el SDK. Tenga en cuenta que la generación del SDK puede tardar unos minutos.
Cuando el SDK se ha generado correctamente, la página Detalles de SDK muestra el lenguaje de programación o la plataforma que ha especificado para el SDK (y los valores de las propiedades necesarias y opcionales).
- Especifique:
- Seleccione Descargar SDK para obtener un archivo zip que contenga los recursos de SDK (bibliotecas de cliente de API, configuraciones y documentación) que se hayan generado a partir del archivo de descripción de API para el recurso de API.
Una vez generado correctamente el SDK para el recurso de API, puede distribuir el archivo zip a los desarrolladores que escriben código que acceden a la API.
Para generar un SDK para un recurso de API a partir de un archivo de descripción de la API cargado, utilice la CLI:
- Configure su entorno de cliente para usar la CLI ( Configuración del entorno de cliente para utilizar la CLI para el desarrollo de gateway de API).
-
Abra un símbolo del sistema y ejecute
oci api-gateway sdk-language-type
para averiguar los lenguajes de programación y las plataformas para las que puede generar un SDK:oci api-gateway sdk-language-type list --compartment-id <ocid>
Verá los lenguajes y plataformas de programación soportados, así como los parámetros necesarios y opcionales que se van a utilizar con cada uno.
- Ejecute
oci api-gateway sdk create
para generar el 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>"}'
donde:
<language>
es el lenguaje de programación o la plataforma para los que desea generar un SDK a partir del archivo de descripción de API cargado.<api-ocid>
es el OCID del recurso de API para el que desea generar el nuevo SDK.--parameters '{"<first-parameter-name>": "<first-parameter-value>", "<second-parameter-name>": "<second-parameter-value>"}'
es el nombre y el valor de cualquier parámetro necesario u opcional que se defina para el lenguaje de programación o la plataforma que haya elegido.
Por ejemplo:
-
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 respuesta al comando incluye:
- OCID del SDK.
- El estado de ciclo de vida (por ejemplo, SUCCEEDED, FAILED).
- ID de la solicitud de trabajo para crear el SDK (los detalles de las solicitudes de trabajo están disponibles durante siete días tras la finalización, cancelación o fallo).
Si desea que el comando espere para devolver el control hasta que se haya creado el SDK (o hasta que la solicitud haya fallado), incluya uno o los dos parámetros siguientes:
--wait-for-state SUCCEEDED
--wait-for-state FAILED
Por ejemplo:
oci api-gateway sdk create --target-language javascript --api-id ocid1.apigatewayapi.oc1..aaaaaaa3______psq --wait-for-state SUCCEEDED
Tenga en cuenta que no puede utilizar el SDK hasta que la solicitud de trabajo lo haya creado correctamente.
-
(Opcional) Para ver el estado de la solicitud de trabajo que está creando el SDK, introduzca:
oci api-gateway work-request get --work-request-id <work-request-ocid>
-
(Opcional) Para ver los logs de la solicitud de trabajo que está creando el SDK, introduzca:
oci api-gateway work-request-log list --work-request-id <work-request-ocid>
-
(Opcional) Si falla la solicitud de trabajo que está creando el SDK y desea revisar los logs de errores, introduzca:
oci api-gateway work-request-error --work-request-id <work-request-ocid>
Para obtener más información sobre el uso de la CLI, consulte Interfaz de línea de comandos (CLI). Para obtener una lista completa de los indicadores y las opciones disponibles para los comandos de la CLI, consulte Ayuda de CLI.
Ejecute:
- Operación CreateSdk para crear un SDK para un recurso de API a partir de un archivo de descripción de la API cargado.
- Operación ListSdks para mostrar los SDK que ya se han generado.
- Operación GetSdk para ver los detalles de un SDK existente.
- Operación UpdateSdk para cambiar el nombre mostrado de un SDK existente.
- Operación DeleteSdk para suprimir un SDK.
- Operación ListSdkLanguageTypes para mostrar los lenguajes de programación y las plataformas para las que puede generar un SDK, junto con los parámetros necesarios y opcionales.
Ejemplos de uso de SDK generados
Tras utilizar API Gateway para generar un SDK a partir del archivo de descripción de la API de un recurso de API, puede descargar e instalar el SDK y, a continuación, utilizarlo para llamar a la API desplegada en un gateway de API.
Los pasos para descargar, instalar y utilizar un SDK generado dependen del lenguaje del SDK y de la funcionalidad de la API.
Los ejemplos de esta sección suponen que se ha generado un SDK para una API de blog en cada uno de los diferentes idiomas. Utilice los ejemplos como guías, que puede ampliar y adaptar para satisfacer sus propios requisitos.
Ejemplo 1: Uso de un SDK de Android generado para un recurso de API
Herramientas y versiones utilizadas en este ejemplo:
- Gradle 6.5
- Maven 3.6.3
- Android Studio 4.1.2
Para utilizar un SDK de Android que API Gateway ha generado a partir del archivo de descripción de API de un recurso de API:
- Descargue el archivo zip que contiene el SDK de Android generado por API Gateway y extraiga su contenido.
- En el directorio raíz extraído del archivo zip, instale el SDK generado en el repositorio de Maven local ejecutando:
mvn clean install
-
Decida qué proyecto de Android utilizará el SDK de Android generado. Abra un proyecto existente de Android que tenga Gradle como gestor de paquetes o cree un nuevo proyecto de Android de la siguiente manera:
- Abra Android Studio. En Archivo, vaya a Nuevo y seleccione Nuevo proyecto.
- Seleccione Sin actividad y seleccione Siguiente.
- En Idioma, seleccione Java y Terminar.
- Actualice el archivo build.gradle del módulo para agregar el SDK generado como dependencia. Por ejemplo:
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") }
Tenga en cuenta que
test-project
se ha agregado endependencies
. - Ejecute la creación del proyecto en Android Studio.
- Una vez finalizada la creación, importe las clases de SDK generadas y utilícelas en una o más de las clases Java del proyecto Android. Por ejemplo:
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(); } }
Utilice el ejemplo anterior como guía, que puede ampliar y adaptar para satisfacer sus propios requisitos.
Ejemplo 2: Uso de un SDK de Java generado para un recurso de API
Herramientas y versiones utilizadas en este ejemplo:
- Maven 3.6.3
- 1.8.0 de Java
Para utilizar un SDK de Java que API Gateway ha generado a partir del archivo de descripción de API de un recurso de API:
- Descargue el archivo zip que contiene el SDK de Java generado por API Gateway y extraiga su contenido.
- En el directorio raíz extraído del archivo zip, instale el SDK generado en el repositorio de Maven local ejecutando:
mvn clean install
- Decida qué proyecto de Maven utilizará el SDK de Java generado. Actualice un proyecto de Maven existente o cree un nuevo proyecto de Maven ejecutando:
mvn -B archetype:generate -DarchetypeGroupdId=org.apache.maven.archetypes -DgroupId=examples.com.testApp -DartifactId=test-maven-project
- Actualice el archivo pom.xml del proyecto de Maven para agregar el SDK generado como dependencia. Por ejemplo:
<dependency> <groupId>com.mock.test</groupId> <artifactId>integration-java</artifactId> <version>1.0.0</version> <scope>compile</scope> </dependency>
- En el directorio raíz del proyecto de Maven, ejecute:
mvn clean install
- Una vez finalizada la instalación de Maven, importe las clases de SDK generadas y utilícelas en el proyecto de Maven. Por ejemplo:
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(); } }
Utilice el ejemplo anterior como guía, que puede ampliar y adaptar para satisfacer sus propios requisitos.
Ejemplo 3: Uso de un SDK JavaScript generado para un recurso de API
Herramientas y versiones utilizadas en este ejemplo:
- Npm 6.14.0
Para utilizar un SDK JavaScript que API Gateway ha generado a partir del archivo de descripción de API de un recurso de API:
- Descargue el archivo zip que contiene el SDK JavaScript generado por API Gateway y extraiga su contenido.
- En el directorio raíz extraído del archivo zip, ejecute:
npm install
npm link
- En el directorio raíz de un proyecto npm existente, ejecute:
Por ejemplo:npm link <path_to_javascript_client_dir>
npm link "/Users/ajay.d.dubey/Downloads/Simple API overview_JAVASCRIPT_v26544725374050339058"
- En el archivo .js desde el que llamar a los servicios, importe y utilice el SDK generado. Por ejemplo:
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) } );
En este ejemplo, el nombre del SDK generado es
blog
. Busque en el archivo package.json extraído el nombre del SDK generado.
Utilice el ejemplo anterior como guía, que puede ampliar y adaptar para satisfacer sus propios requisitos.
Ejemplo 4: Uso de un SDK de Swift generado para un recurso de API
Herramientas y versiones utilizadas en este ejemplo:
- XCode 12.4
- Swift5.3.1
- CocoaPods 1.10.1
Para utilizar un SDK de Swift que API Gateway ha generado a partir de un archivo de descripción de API de un recurso de API:
- Descargue el archivo zip que contiene el SDK de Swift generado por API Gateway y extraiga su contenido.
- Decida qué proyecto XCode utilizará el SDK de Swift generado. Actualice un proyecto XCode existente o cree un nuevo proyecto XCode de la siguiente manera:
- Abra XCode. En Archivo, vaya a Nuevo y seleccione Proyecto.
- Seleccione Aplicación y seleccione Siguiente.
- En Idioma, seleccione Swift y seleccione Siguiente.
- Especifique una ubicación para el proyecto y seleccione Crear para crear el proyecto XCode.
- Si el directorio raíz del proyecto XCode aún no contiene un Podfile, cree un Podfile ejecutando:
pod init
- Actualice el podfile para agregar una referencia al SDK generado. Por ejemplo:
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
- En el directorio raíz del proyecto XCode, ejecute:
pod install
Resultado de ejemplo:
~/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`.
- Cierre las instancias abiertas de XCode.
- En el directorio raíz del proyecto XCode, abra el archivo .xcworkspace para ver el pod.
- Actualice cualquier archivo SWIFT para importar el pod y empiece a utilizar el SDK generado. Por ejemplo, actualice el archivo ViewController.swift para importar el pod mysdk de la siguiente manera:
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) }
Utilice el ejemplo anterior como guía, que puede ampliar y adaptar para satisfacer sus propios requisitos.
Ejemplo 5: uso de un SDK TypeScript generado para un recurso de API
Herramientas y versiones utilizadas en este ejemplo:
- hilo 1.22.10
En este ejemplo se muestra cómo crear y consumir un SDK TypeScript generado mediante hilo. Si desea consumir un SDK TypeScript generado mediante NPM, siga los pasos para consumir un SDK JavaScript generado mediante NPM que se muestran en el Ejemplo 3: Uso de un SDK JavaScript generado para un recurso de API.
Para utilizar un SDK TypeScript que API Gateway ha generado a partir del archivo de descripción de API de un recurso de API:
- Descargue el archivo zip que contiene el SDK TypeScript generado por API Gateway y extraiga su contenido.
- En el directorio raíz extraído del archivo zip, ejecute:
yarn install
yarn run build
yarn link
- En el directorio raíz del proyecto que desea utilizar el SDK generado:
- Ejecutar:
yarn link <project-name>
donde
<project name>
es el nombre del SDK generado. Busque en el archivo package.json extraído el nombre del SDK generado. Por ejemplo:yarn link test-project
- Ejecutar:
yarn install
- Ejecutar:
- Actualice el archivo ts del proyecto que desea utilizar el SDK generado. Por ejemplo:
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(); } ); }); });
Utilice el ejemplo anterior como guía, que puede ampliar y adaptar para satisfacer sus propios requisitos.