Sobre o gateway de API

Hoje, os serviços baseados na Web oferecem uma grande variedade de funcionalidades, que incluem serviços de mapas, clima e imagens, jogos, leilões e muitos outros tipos de serviços. Os provedores de serviços têm muitas opções para implementar, implantar e gerenciar os serviços. Por exemplo, um serviço pode ser desenvolvido em Java ou .NET, enquanto outro usa Node.js.

As implementações de back-end também podem variar para um único provedor de serviços. Um provedor de serviços pode ter serviços legados implementados com uma arquitetura e novos serviços implementados usando uma arquitetura completamente diferente.

Independentemente da implementação, os serviços baseados na Web exigem uma maneira de disponibilizar os serviços para os desenvolvedores de apps. Muitas vezes, esses serviços são expostos como um conjunto de endpoints HTTP. Dependendo do serviço, o endpoint também retorna dados no formato XML ou JSON para o app cliente.

Sobre os serviços do Google Cloud Platform

Ao desenvolver seus serviços no Google Cloud Platform (GCP), há muitas opções para implementar os serviços, como o Cloud Functions, o Cloud Run e Ambiente padrão do App Engine. A flexibilidade do GCP significa que você escolhe a arquitetura de back-end correta para os requisitos do seu serviço.

Os desenvolvedores de apps são os clientes dos serviços de back-end. Os desenvolvedores de apps consomem seus serviços para implementar apps para dispositivos móveis ou tablets, por meio de apps executados em um navegador ou por qualquer outro tipo de app que possa fazer uma solicitação de serviço.

A exposição pública de serviços pela Web pode ser um desafio. Para ser bem-sucedido, um provedor de serviços precisa:

  • Autenticar o acesso ao serviço
  • Transporte de dados seguro entre clientes e o serviço
  • Proteja o serviço contra ataques maliciosos
  • Escalonar o serviço conforme o uso aumenta ou diminui
  • Forneça à equipe de operações de back-end uma maneira de monitorar e rastrear o uso do serviço
  • Rastrear o uso para fornecer informações de faturamento precisas

Além disso, se os serviços usam interfaces e protocolos diferentes, o acesso a eles pode ser um desafio para os desenvolvedores de apps. Além de aprender e compreender cada interface de serviço, os desenvolvedores também precisam monitorar os diferentes serviços em busca de alterações e, em seguida, atualizar e reimplantar os apps conforme necessário.

API Gateway

A API Gateway permite o acesso seguro aos seus serviços por meio de uma API REST bem definida e consistente em todos os seus serviços, independentemente da implementação deles. Uma API consistente:

  • Facilita o consumo dos serviços pelos desenvolvedores de apps.
  • Permite alterar a implementação do serviço de back-end sem afetar a API pública.
  • Permite que você aproveite os recursos de escalonamento, monitoramento e segurança integrados ao Google Cloud Platform (GCP).

A imagem a seguir mostra os desenvolvedores de apps que fazem solicitações aos serviços de back-end pelo gateway de API:

Fazer solicitações de serviços da Web por meio do gateway de API

Com a API Gateway, os desenvolvedores de apps consomem suas APIs REST para implementar aplicativos. Como todas as APIs estão hospedadas no gateway de API, os desenvolvedores de apps veem uma interface consistente em todos os serviços de back-end.

Ao implantar APIs no gateway de API, você pode atualizar o serviço de back-end ou até mesmo mover o serviço de uma arquitetura para outra, sem ter que alterar a API. Contanto que a API do serviço permaneça consistente, os desenvolvedores de apps não precisarão modificar os aplicativos implantados devido a alterações subjacentes no back-end.

A API Gateway é um sistema de gerenciamento de APIs distribuídas que também fornece hospedagem, geração de registros, monitoramento e outros recursos para ajudar você a criar, compartilhar, manter e proteger suas APIs. O Gateway de API é integrado de forma nativa ao GCP e lida com todas as tarefas envolvidas no processamento de chamadas de API simultâneas, incluindo gerenciamento de tráfego, autorização e monitoramento.

O que é uma API?

Uma API é uma interface que facilita que um aplicativo consuma recursos ou dados de outro aplicativo. Ao definir pontos de entrada estáveis, simples e bem documentados, as APIs permitem que os desenvolvedores acessem e reutilizem facilmente a lógica do aplicativo criada por outros desenvolvedores.

Por exemplo, a seguinte tabela descreve um exemplo de API REST que pode retornar informações sobre um livro:

Propriedade Valor Descrição
URL https://www.mybooksapi.com/books/info Retorne o título, o autor e a data de publicação de um livro com base no International Standard Book Number (ISBN).
Verbo HTTP GET Faça uma solicitação GET à API.
Parâmetro de consulta isbn Passe o número do ISBN do livro, ou seja, o ID dele.
Dados de resposta

{
  "title" : "book_title",
  "author" : "author_name",
  "published" : "publish_date"
}
Objeto JSON que contém detalhes do livro.
Código de resposta 200 Solicitação bem-sucedida.

Usando essas informações, você pode fazer a seguinte solicitação de cURL a essa API para ver informações sobre um livro:

curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217

Como esse serviço tem uma API bem definida, incluindo uma descrição de formatos de dados e códigos de resposta HTTP, o desenvolvedor de apps não precisa saber nada sobre a implementação subjacente do serviço de back-end

Como os aplicativos que consomem APIs são sensíveis às alterações, as APIs também implicam um contrato entre provedores de API e consumidores de API. O contrato garante que, com o tempo, a API mudará de maneira previsível. Por exemplo, a API Book pode ser atualizada para adicionar outros parâmetros de consulta, como title ou author, ou alterar o JSON de resposta para inserir informações adicionais sobre o livro.

Como definir uma API

Você define uma API implantada no gateway de API como uma especificação OpenAPI 2.0. Os principais componentes de uma definição de API incluem:

  • O URL ou ponto de entrada do serviço de back-end
  • O formato de dados de qualquer dado passado em uma solicitação para a API
  • O formato de dados de qualquer dado retornado pelo serviço na resposta da API
  • O mecanismo de autenticação usado para controlar o acesso ao serviço

Depois de definir a API, use a interface da linha de comando gcloud para fazer upload dela para uma configuração de API no GCP:

Use o gcloud para fazer upload da especificação de API para o GCP.

Como implantar uma configuração de API no gateway de API

Para criar a API, implante a configuração dela no gateway de API. Use o comando gcloud para implantar a configuração da API:

Use o gcloud para implantar a especificação OpenAPI.

Depois que a configuração da API for implantada, seus clientes poderão fazer chamadas REST para a API.

Como gerenciar uma API

Depois de implantado e em execução, é possível monitorar a atividade da API, como registros e métricas de uso. Quando um cliente faz uma solicitação à API, o gateway de API registra informações sobre a solicitação e a resposta. A API Gateway também rastreia latência, tráfego e erros.

Com o tempo, convém atualizar uma API implantada para adicionar novas funcionalidades, melhorar o desempenho ou corrigir problemas na API. Para atualizar uma API implantada, basta atualizar a especificação OpenAPI para a definição da API e fazer upload e reimplantar a API.

Controlar o acesso à API

A API Gateway permite configurar sua API para exigir autenticação antes que o cliente possa acessar a API Atualmente, o gateway de API é compatível com o mesmo mecanismo e sintaxe de autenticação usados pelo Cloud Endpoints, incluindo o uso de:

Também é possível usar o Console do Google Cloud Platform para compartilhá-la com outros desenvolvedores. Assim, eles podem ativar a API e gerar chaves para chamá-la.

Além de definir um mecanismo de autenticação para verificar a identidade de um usuário, sua API também precisa decidir o que o usuário autenticado pode fazer com ela. Para saber mais, consulte o guia de autenticação do GCP.

A seguir