Como criar rapidamente mock servers de API usando Vertex AI e Cloud Run

Bruno Patrocinio
google-cloud-brasil
5 min readJun 19, 2023

O teste de API usando mock servers é uma ferramenta fundamental para desenvolvedores de API. Os principais benefícios são:

  • Acelera o desenvolvimento: mock servers podem ser usados ​​para simular APIs reais, o que permite que os desenvolvedores testem seu código sem ter que esperar que os back-ends reais da API estejam prontos. Isso pode economizar muito tempo, especialmente ao desenvolver novos recursos ou fazer alterações em APIs existentes.
  • Melhora a qualidade: mock servers podem ser usados ​​para testar uma variedade de cenários, como entrada inválida, erros inesperados e conteúdo inesperado. Isso pode ajudar a melhorar a qualidade das APIs detectando rapidamente bugs.
  • Reduz o risco: mock servers podem ser usados ​​para testar APIs isoladamente, o que pode ajudar a reduzir o risco de quebrar outras partes do sistemas ao fazer alterações em uma API.

Neste tutorial, mostrarei como gerar rapidamente mock servers de API com base em uma especificação OpenAPI usando a Vertex AI e Google Cloud Run.

Ao combinar Vertex AI e Cloud Run, os desenvolvedores de API podem gerar mock servers de APIs de forma rápida e fácil, que podem ser usados ​​para testes, desenvolvimento e colaboração.

Aqui estão as etapas envolvidas:

  1. Crie uma especificação OpenAPI para sua API.
  2. Use o Generative AI Studio do Vertex AI para gerar o código a partir da Especificação OpenAPI.
  3. Implante o mock server no Cloud Run.
  4. Teste sua API no servidor fictício.

Vamos orientá-lo em cada uma dessas etapas com mais detalhes nas seções a seguir.

Pré-requisitos

  • Ter um projeto do Google Cloud com faturamento ativado

Tutorial passo a passo

Neste tutorial, usarei esta spec do OpenAPI .

Vamos começar!

  1. Primeiro, prepare seu arquivo yaml de especificação OpenAPI e verifique se ele é válido usando uma ferramenta online como esta.
  2. Copie sua especificação OpenAPI e navegue até Code Prompt do Generative AI Studio no Vertex AI.
  1. Use o prompt a seguir (ou personalize-o de acordo com suas próprias necessidades) e certifique-se de substituir o texto do espaço reservado “COLE_SUA_SPEC_AQUI” pelo sua spec OpenAPI.
Gere código Python Flask para API de um mock server com base na 
seguinte especificação OpenAPI: COLE_SUA_SPEC_AQUI

4. Vertex IA responderá com código Python Flask. Abaixo está a resposta no meu caso:

from flask import Flask
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)

# Define as rotas da API

@api.route('/products')
class ProductsResource(Resource):
def get(self):
# Retorna uma lista de produtos
return {
'products': [
{
'id': '1',
'name': 'Product 1',
'description': 'This is product 1',
'picture': 'https://example.com/product1.jpg',
'price_usd': {
'currency_code': 'USD',
'units': 100,
'nanos': 0
},
'categories': ['vintage', 'gardening']
},
{
'id': '2',
'name': 'Product 2',
'description': 'This is product 2',
'picture': 'https://example.com/product2.jpg',
'price_usd': {
'currency_code': 'USD',
'units': 200,
'nanos': 0
},
'categories': ['vintage', 'home']
}
]
}

@api.route('/products/<product_id>')
class ProductResource(Resource):
def get(self, product_id):
# Retorna os detalhes de um produto
return {
'id': product_id,
'name': 'Product 1',
'description': 'This is product 1',
'picture': 'https://example.com/product1.jpg',
'price_usd': {
'currency_code': 'USD',
'units': 100,
'nanos': 0
},
'categories': ['vintage', 'gardening']
}

if __name__ == '__main__':
app.run(debug=True)

Nota : para o mesmo prompt, você pode obter um código diferente do acima. Portanto, use-o com cautela. Você também pode precisar ajustar o código conforme necessário e adicionar quaisquer dependências ausentes.

5. Como próxima etapa, precisamos preparar nosso código para ser implantado como um serviço do Cloud Run

  • Navegue até o console do GCP
  • Verifique se a API Cloud Run está ativada em seu projeto.
  • Abra o Cloud Shell e crie uma pasta em seu diretório principal
  • Siga a documentação aqui para preparar seu código para implantação no Cloud Run criando os seguintes arquivos: main.py , requirements.txt e Dockerfile .
  • Quando seu código estiver pronto, você poderá implantá-lo no Cloud Run usando o seguinte comando gcloud
gcloud run deploy

Você será solicitado a escolher um nome para seu serviço Cloud Run (mock server) e uma região GCP (por exemplo, us-central1 ) onde seu serviço será implantado. Eu recomendo permitir apenas invocações autenticadas do serviço Cloud Run.

Aguarde alguns instantes até que a implantação seja concluída. Em caso de sucesso, a linha de comando exibe a URL do serviço.

Testando o mock server da API

Neste exemplo, criaremos um proxy de API da Apigee com base na especificação OpenAPI mencionada anteriormente. Em seguida, usaremos o Mock Server que criamos anteriormente para testar nosso proxy de API da Apigee.

  1. Navegue até o console da Apigee, caso ainda não tenha configurado, saiba como aqui
  2. Crie um proxy de API usando sua especificação OpenAPI, siga as etapas descritas aqui. Use a URL do serviço Cloud Run como um “endpoint de destino do proxy”.
  3. Se você configurou seu serviço Cloud Run para permitir apenas invocações autenticadas, será necessário criar uma conta de serviço e conceder a ela a função “ Cloud Run Invoker ”. Depois de fazer isso, você precisará configurar seu proxy da Apigee para usar essa conta de serviço para invocar seu mock server. Instruções detalhadas são explicadas aqui
  4. Você pode usar um cliente de API como o Postman para fazer chamadas de API para seu proxy de API e testar seus endpoints, veja os dois exemplos abaixo:

Exemplo 1 : Obtendo todos os produtos

Exemplo 2 : Obtendo um produto específico (por exemplo, id=1)

Conclusão

Neste artigo, você pôde conhecer uma nova forma de utilizar o Vertex AI para gerar código automaticamente utilizando GenAI e fazer o deploy no Cloud Run

Deixe sua sugestão sobre o que mais gostaria de ler aqui! 📢

Baseado na postagem: https://medium.com/@hbougdal_90846/how-to-quickly-create-api-mock-servers-using-bard-and-cloud-run-9240ccca0543

--

--