Gerando SDKs para um Recurso de API
Descubra como gerar um SDK para uma API a partir de uma descrição de API com o serviço API Gateway para fornecer aos desenvolvedores acesso programático aos serviços de back-end.
Ao usar o serviço API Gateway, você tem a opção de gerar SDKs (Software Development Kits) para um recurso de API. Se você usar o recurso de API para implantar uma API em um gateway de API, os SDKs gerados concederão aos desenvolvedores acesso programático à API. Para facilitar a integração com a API, você pode gerar SDKs para vários idiomas e plataformas, incluindo:
- Android
- Java
- JavaScript
- Swift
- TypeScript
Depois de gerar um SDK, você pode fazer download de um arquivo zip contendo os recursos do SDK (bibliotecas, configurações e documentação do cliente API) e distribuí-lo para os desenvolvedores que gravam o código que acessam a API.
Para gerar um SDK para um recurso de API, você deve ter criado uma descrição de API para o recurso de API. Você cria uma descrição da API fazendo upload de um arquivo de descrição da API (às vezes chamado de 'especificação da API' ou 'espec da API') escrito em um idioma suportado. No momento há suporte para o OpenAPI Specification versão 2.0 (anteriormente Swagger Specification 2.0) e a versão 3.0. Para obter mais informações sobre recursos de API e descrições de API, consulte Criando um Recurso de API com uma Descrição de API.
A geração de um SDK usando o serviço API Gateway é opcional. Você pode implantar uma API em um gateway de API sem gerar um SDK. Da mesma forma, você pode fornecer acesso programático a uma API implantada em um gateway de API com um SDK criado em outra ferramenta. Você também pode usar o serviço de Gateway de API simplesmente para gerar um SDK com base em um arquivo de descrição de API, sem usar o recurso de API associado para implantar uma API em um gateway de API.
Observe o seguinte:
- Um recurso de API pode ter:
- zero SDKs
- um ou mais SDKs para o mesmo idioma ou plataforma
- um ou mais SDKs para diferentes linguagens ou plataformas
- Você só pode gerar um SDK completamente novo. Cada SDK gerado tem um identificador exclusivo (OCID). Não é possível "gerar novamente" um SDK existente que já tenha sido gerado (embora você possa alterar o nome para exibição de um SDK existente).
- É sua responsabilidade gerenciar SDKs gerados. Se você fizer upload de uma versão atualizada de um arquivo de descrição da API do qual gerou anteriormente um SDK, um novo SDK não será gerado automaticamente. Você precisa decidir se deseja gerar um novo SDK ou não. Se você gerar um novo SDK, deverá decidir se deseja excluir o SDK existente ou retê-lo.
- Você só poderá gerar um SDK se um arquivo de descrição da API submetido a upload não tiver falhas nas verificações de validação. Observe que você poderá gerar um SDK se o arquivo de descrição da API submetido a upload tiver passado por verificações de validação com advertências. No entanto, recomendamos que você resolva quaisquer avisos antes de gerar o SDK.
Para gerar um SDK para um recurso de API com base em um arquivo de descrição de API submetido a upload, usando a Console:
- Na página da lista APIs, selecione o recurso de API para o qual você deseja gerar um SDK. Se precisar de ajuda para localizar a página da lista, consulte Listando Recursos da API.
- Se você ainda não tiver feito upload de um arquivo de descrição da API, siga as instruções em Criando um Recurso da API com uma Descrição da API para criar um recurso da API e especificar um arquivo de descrição da API para upload.
- Na página Detalhes da API, selecione SDKs na lista Recursos e, em seguida, selecione Criar SDK.
- Na caixa de diálogo Criar SDK:
- Especifique:
- Nome: O nome do novo SDK. Evite digitar informações confidenciais.
- Linguagem de Programação: A linguagem de programação ou a plataforma para a qual você deseja gerar um SDK com base no arquivo de descrição da API submetido a upload.
- <Language> Properties: Dependendo da linguagem de programação ou plataforma escolhida, especifique valores para propriedades específicas da linguagem ou da plataforma. As propriedades obrigatórias são sempre mostradas. Selecione Mostrar Propriedades Opcionais para ver e informar valores para propriedades opcionais adicionais.
- (Opcional) Selecione Mostrar Opções Avançadas e, opcionalmente, especifique:
- Tags: Se você tiver permissões para criar um recurso, também terá permissões para aplicar tags de formato livre a esse recurso. Para aplicar uma tag definida, você deve ter permissões para usar o namespace da tag. Para obter mais informações sobre tags, consulte Tags de Recursos. Se você não tiver certeza se deseja aplicar tags, ignore essa opção ou pergunte a um administrador. Você pode aplicar as tags posteriormente.
- Selecione Criar para gerar o novo SDK.
O SDK é gerado. Observe que pode levar alguns minutos para gerar o SDK.
Quando o SDK tiver sido gerado com sucesso, a página Detalhes do SDK mostrará a linguagem de programação ou a plataforma que você especificou para o SDK (e os valores de quaisquer propriedades obrigatórias e opcionais).
- Especifique:
- Selecione Fazer Download do SDK para obter um arquivo zip contendo os recursos do SDK (bibliotecas, configurações e documentação do cliente da API) que foram gerados com base no arquivo de descrição da API para o recurso da API.
Depois de gerar com sucesso o SDK para o recurso de API, você pode distribuir o arquivo zip para desenvolvedores que estão gravando código acessando a API.
Para gerar um SDK para um recurso de API com base em um arquivo de descrição de API submetido a upload, usando a CLI:
- Configure seu ambiente de cliente para usar a CLI ( Configurando Seu Ambiente de Cliente para usar a CLI para o Desenvolvimento de Gateway de API).
-
Abra um prompt de comando e execute
oci api-gateway sdk-language-typepara descobrir as linguagens de programação e as plataformas para as quais você pode gerar um SDK:oci api-gateway sdk-language-type list --compartment-id <ocid>Você verá as plataformas e linguagens de programação suportadas e os parâmetros necessários e opcionais a serem usados com cada uma delas.
- Execute
oci api-gateway sdk createpara gerar o 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>"}'em que:
<language>é a linguagem ou plataforma de programação para a qual você deseja gerar um SDK com base no arquivo de descrição da API submetido a upload.<api-ocid>é o OCID do recurso de API para o qual você deseja gerar o novo SDK.--parameters '{"<first-parameter-name>": "<first-parameter-value>", "<second-parameter-name>": "<second-parameter-value>"}'são o nome e o valor de qualquer parâmetro necessário e/ou opcional a ser definido para a linguagem de programação ou plataforma escolhida.
Por exemplo:
-
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"}'
A resposta ao comando inclui:
- O OCID do SDK.
- O estado do ciclo de vida (por exemplo, SUCCEEDED, FAILED).
- O id da solicitação de serviço para criar o SDK (Detalhes das solicitações de serviço estão disponíveis por sete dias após a conclusão, o cancelamento ou a falha).
Se quiser que o comando aguarde o retorno de controle até que o SDK tenha sido criado (ou a solicitação tenha falhado), inclua um ou ambos os seguintes parâmetros:
--wait-for-state SUCCEEDED--wait-for-state FAILED
Por exemplo:
oci api-gateway sdk create --target-language javascript --api-id ocid1.apigatewayapi.oc1..aaaaaaa3______psq --wait-for-state SUCCEEDEDObserve que você poderá usar o SDK até que a solicitação de serviço a tenha criado com sucesso.
-
(Opcional) Para ver o status da solicitação de serviço que está criando o SDK, informe:
oci api-gateway work-request get --work-request-id <work-request-ocid> -
(Opcional) Para exibir os logs da solicitação de serviço que está criando o SDK, informe:
oci api-gateway work-request-log list --work-request-id <work-request-ocid> -
(Opcional) Se a solicitação de serviço que está criando o SDK falhar e você quiser revisar os logs de erro, informe:
oci api-gateway work-request-error --work-request-id <work-request-ocid>
Para obter mais informações sobre o uso da CLI, consulte Interface de Linha de Comando (CLI). Para obter uma lista completa de flags e opções disponíveis para comandos da CLI, consulte a Ajuda da CLI.
Execute:
- Operação CreateSdk para criar um SDK para um recurso de API com base em um arquivo de descrição de API submetido a upload.
- Operação ListSdks para listar SDKs que já foram gerados.
- Operação GetSdk para ver detalhes de um SDK existente.
- Operação UpdateSdk para alterar o nome para exibição de um SDK existente.
- Operação DeleteSdk para excluir um SDK.
- Operação ListSdkLanguageTypes para listar as linguagens e plataformas de programação para as quais você pode gerar um SDK, juntamente com quaisquer parâmetros obrigatórios e opcionais.
Exemplos de Uso de SDKs Gerados
Tendo usado o Gateway de API para gerar um SDK com base no arquivo de descrição da API de um recurso de API, você pode fazer download e instalar o SDK e, em seguida, usá-lo para chamar a API implantada em um gateway de API.
As etapas para fazer download, instalar e usar um SDK gerado dependem da linguagem do SDK e da funcionalidade da API.
Os exemplos nesta seção pressupõem que um SDK foi gerado para uma API de blog em cada um dos diferentes idiomas. Use os exemplos como guias, que você pode estender e adaptar para atender aos seus próprios requisitos.
Exemplo 1: Usando um SDK Android Gerado para um Recurso de API
Ferramentas e versões usadas neste exemplo:
- Gradle 6.5
- Maven 3.6.3
- Estúdio Android 4.1.2
Para usar um SDK do Android que o Gateway de API gerou com base no arquivo de descrição da API de um recurso de API:
- Faça download do arquivo zip que contém o Android SDK gerado pelo API Gateway e extraia seu conteúdo.
- No diretório raiz extraído do arquivo zip, instale o SDK gerado no repositório local do Maven executando:
mvn clean install -
Decida qual projeto do Android usará o SDK gerado do Android. Abra um projeto Android existente que tenha o Gradle como gerenciador de pacotes ou crie um novo projeto Android da seguinte forma:
- Abra o Android Studio. Em Arquivo, vá para Novo e selecione Novo Projeto.
- Selecione Nenhuma Atividade e Próximo.
- Para Idioma, selecione Java e Finalizar.
- Atualize o arquivo build.gradle do módulo para adicionar o SDK gerado como uma dependência. Por exemplo:
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") }Observe que
test-projectfoi adicionado emdependencies. - Execute o build do projeto no Android Studio.
- Quando o build for concluído, importe as classes SDK geradas e use-as em uma ou mais classes Java do projeto Android. Por exemplo:
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(); } }
Use o exemplo acima como um guia, que você pode estender e adaptar para atender aos seus próprios requisitos.
Exemplo 2: Usando um SDK Java Gerado para um Recurso de API
Ferramentas e versões usadas neste exemplo:
- Maven 3.6.3
- Java 1.8.0
Para usar um SDK Java que o Gateway de API gerou com base no arquivo de descrição da API de um recurso de API:
- Faça download do arquivo zip que contém o SDK Java que o Gateway de API gerou e extraia seu conteúdo.
- No diretório raiz extraído do arquivo zip, instale o SDK gerado no repositório local do Maven executando:
mvn clean install - Decida qual projeto do Maven usará o Java SDK gerado. Atualize um projeto Maven existente ou crie um novo projeto Maven executando:
mvn -B archetype:generate -DarchetypeGroupdId=org.apache.maven.archetypes -DgroupId=examples.com.testApp -DartifactId=test-maven-project - Atualize o arquivo pom.xml do projeto Maven para adicionar o SDK gerado como uma dependência. Por exemplo:
<dependency> <groupId>com.mock.test</groupId> <artifactId>integration-java</artifactId> <version>1.0.0</version> <scope>compile</scope> </dependency> - No diretório raiz do projeto Maven, execute:
mvn clean install - Quando a instalação do Maven estiver concluída, importe as classes SDK geradas e use-as no projeto do Maven. Por exemplo:
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(); } }
Use o exemplo acima como um guia, que você pode estender e adaptar para atender aos seus próprios requisitos.
Exemplo 3: Usando um SDK JavaScript Gerado para um Recurso de API
Ferramentas e versões usadas neste exemplo:
- Npm 6.14.0
Para usar um SDK JavaScript que o Gateway de API gerou com base no arquivo de descrição da API de um recurso de API:
- Faça download do arquivo zip que contém o SDK JavaScript gerado pelo Gateway de API e extraia seu conteúdo.
- No diretório raiz extraído do arquivo zip, execute:
npm installnpm link - No diretório raiz de um projeto npm existente, execute:
Por exemplo:npm link <path_to_javascript_client_dir>npm link "/Users/ajay.d.dubey/Downloads/Simple API overview_JAVASCRIPT_v26544725374050339058" - No arquivo .js do qual chamar os serviços, importe e use o SDK gerado. Por exemplo:
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) } );Neste exemplo, o nome do SDK gerado é
blog. Procure no arquivo package.json extraído o nome do SDK gerado.
Use o exemplo acima como um guia, que você pode estender e adaptar para atender aos seus próprios requisitos.
Exemplo 4: Usando um Swift SDK Gerado para um Recurso de API
Ferramentas e versões usadas neste exemplo:
- XCode 12.4
- Swift 5.3.1
- CocoaPods 1.10.1
Para usar um SDK Swift que o Gateway de API gerou com base no arquivo de descrição da API de um recurso de API:
- Faça download do arquivo zip que contém o SDK Swift que o Gateway de API gerou e extraia seu conteúdo.
- Decida qual projeto XCode usará o Swift SDK gerado. Atualize um projeto XCode existente ou crie um novo projeto XCode da seguinte forma:
- Abra XCode. Em Arquivo, vá para Novo e selecione Projeto.
- Selecione Aplicativo e Próximo.
- Para Idioma, selecione Alternar e selecione Próximo.
- Especifique um local para o projeto e selecione Criar para criar o projeto XCode.
- Se o diretório raiz do projeto XCode ainda não contiver um Podfile, crie um Podfile executando:
pod init - Atualize o Podfile para adicionar uma referência ao SDK gerado. Por exemplo:
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 - No diretório raiz do projeto XCode, execute:
pod installExemplo de saída:
~/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`. - Feche todas as instâncias abertas de XCode.
- No diretório raiz do projeto XCode, abra o arquivo .xcworkspace para ver o pod.
- Atualize qualquer arquivo swift para importar o pod e comece a usar o SDK gerado. Por exemplo, atualize o arquivo ViewController.swift para importar o pod mysdk da seguinte forma:
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) }
Use o exemplo acima como um guia, que você pode estender e adaptar para atender aos seus próprios requisitos.
Exemplo 5: Usando um SDK TypeScript Gerado para um Recurso de API
Ferramentas e versões usadas neste exemplo:
- fio 1.22.10
Este exemplo mostra como criar e consumir um SDK TypeScript gerado usando yarn. Se você quiser consumir um SDK TypeScript gerado usando o NPM, siga as etapas para consumir um SDK JavaScript gerado usando o NPM que são mostradas no Exemplo 3: Usando um SDK JavaScript Gerado para um Recurso de API.
Para usar um SDK TypeScript que o Gateway de API gerou com base no arquivo de descrição da API de um recurso de API:
- Faça download do arquivo zip que contém o SDK TypeScript gerado pelo Gateway de API e extraia seu conteúdo.
- No diretório raiz extraído do arquivo zip, execute:
yarn installyarn run buildyarn link - No diretório raiz do projeto que você deseja usar o SDK gerado:
- Execução:
yarn link <project-name>em que
<project name>é o nome do SDK gerado. Procure no arquivo package.json extraído o nome do SDK gerado. Por exemplo:yarn link test-project - Execução:
yarn install
- Execução:
- Atualize o arquivo ts do projeto que você deseja usar o SDK gerado. Por exemplo:
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(); } ); }); });
Use o exemplo acima como um guia, que você pode estender e adaptar para atender aos seus próprios requisitos.