O que é um endpoint de API?

Um endpoint de API é uma das extremidades de uma conexão de API, onde são recebidas as chamadas de API.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Definir endpoint de API
  • Entender porque os endpoints da API usam URLs
  • Entender a importância da autenticação para os endpoints da API

Copiar o link do artigo

O que é um endpoint de API?

Uma interface de programação de aplicativos (API) é a forma pela qual um aplicativo solicita um serviço de outro aplicativo. As APIs permitem que os desenvolvedores evitem recriar recursos de aplicativos que já existem. Um endpoint da API é o local em que essas solicitações (conhecidas como chamadas de API) são atendidas.

Se a Alice e o Bob estão conversando pelo telefone, as palavras da Alice se deslocam até o Bob e vice-versa. A Alice direciona suas palavras para o "endpoint" da conversa: o Bob.

Alice: "Olá, Bob" ----------> Bob

Da mesma forma, a integração de uma API é como uma conversa. Só que em vez de dizer "Olá", uma API diz algo como "Preciso de alguns dados" para o servidor da API, fazendo uma chamada de API. O endpoint do servidor da API então responde "Aqui estão os dados" — uma resposta da API. E os endpoints da API não são entidades físicas como a Alice e o Bob: eles existem no software, não no hardware.

Servidores de API e clientes de API

As APIs são hospedadas em um ou mais servidores, que são computadores especializados que armazenam dados e executam programas de software. Cada servidor "distribui" dados, conteúdo e funcionalidade de software pela internet para outros dispositivos. O endpoint da API quase sempre é hospedado em um servidor.

Do outro lado da conexão de API fica o cliente de API: a entidade que solicita serviços de API. Alguns chamam isso de "usuário" da API, embora a maior parte das chamadas de API seja automatizada.

Como um cliente de API conhece o endpoint do servidor?

Para que uma API possa ser utilizada, deve ter uma documentação. A documentação indica, entre outras coisas, que tipos de solicitações a API irá aceitar, o que a API pode fazer, como ela formata suas respostas e quais são seus endpoints. Os desenvolvedores podem revisar a documentação de uma API e incorporar essas informações à medida que criam seus aplicativos.

A título de exemplo, veja a documentação da API da Cloudflare, incluindo o que são endpoints, aqui: https://api.cloudflare.com/

Como as APIs usam os URLs?

Localizadores uniformes de recursos (URLs) são usados na web para várias finalidades, inclusive para a localização de páginas web. Por exemplo, o URL para a versão em inglês norte-americano desta página web é https://www.cloudflare.com/learning/security/api/what-is-api-endpoint/. Quando um usuário digita esse URL em seu navegador, este sabe onde encontrar essa página web e pode carregá-la.

Os URLs também indicam os endpoints da API. Quando a Alice e o Bob conversam pelo telefone, a Alice faz uma chamada para o Bob usando o número de telefone do Bob. De forma semelhante, o URL do endpoint da API é como um número de telefone que permite fazer chamadas de API.

Um servidor de API pode hospedar um ou vários endpoints da API, o que significa que esse servidor aceitará e processará chamadas direcionadas aos URLs desses endpoints. Clientes de APIs também precisam ter um URL para que o servidor de API saiba para onde enviar suas respostas, da mesma forma que o Bob e a Alice precisam ter um número de telefone para que as chamadas telefônicas entre eles funcionem. Os desenvolvedores definem esse URL quando estão criando seus aplicativos.

Um URL sempre inclui o protocolo da camada de aplicativos, como o HTTP, usado para alcançá-lo. A maioria das APIs da web utiliza HTTP, de modo que este fica incluído no URL dos endpoints da API.

Como os clientes e endpoints da API são autenticados?

Uma API desenvolvida corretamente não aceita chamadas de API de qualquer um. Isso deixaria o servidor de API aberto para receber dados maliciosos dos invasores. Além disso, o uso da API normalmente custa dinheiro, então, nesses casos, o servidor de API precisa verificar se as chamadas de API são realizadas por um cliente pagante.

É por essas razões que o servidor de API precisa verificar se o cliente de API, que realizou a chamada, é conhecido e confiável. Ele faz isso por meio da autenticação.

Autenticação é o processo de verificar a identidade. Assim como existem várias maneiras de um usuário humano ser autenticado em um sistema, existem quatro maneiras principais pelas quais os endpoints da API podem exigir a autenticação:

  1. Chave de API: designa-se uma chave ou uma sequência de caracteres exclusiva ao cliente de API que apenas ele e o serviço de API conheçam. Quando o cliente de API envia uma chamada de API ao endpoint do servidor, ele inclui a chave para que o servidor saiba de onde vem a chamada.
  2. Autenticação básica (nome de usuário e senha): é semelhante à abordagem da chave: o cliente de API configura um nome de usuário e senha com o serviço de API e inclui essas credenciais nas chamadas de API.
  3. Token OAuth: em vez de exigir uma autenticação do cliente, um servidor de API pode obter um token de autenticação junto a um servidor de autenticação confiável usando o protocolo OAuth.
  4. TLS Mútuo: TLS é o protocolo que cria uma conexão autenticada entre o cliente e o servidor ao carregar páginas web. Ele também pode autenticar os dois lados de uma integração de API.

Em muitos casos, o TLS mútuo é o método de autenticação mais eficaz. Por um lado, ele autentica tanto o endpoint como o cliente, não apenas o cliente, e dessa forma os dois lados podem ter certeza de que estão recebendo dados de uma fonte legítima. Ele também utiliza chaves privadas, que nunca são compartilhadas entre os endpoints e que, portanto, não podem ser interceptadas em trânsito. Por outro, as chaves, senhas e tokens da API podem ser copiados ou roubados.

O API Shield da Cloudflare utiliza o TLS mútuo para autenticar os clientes e endpoints da API, ajudando a proteger os dois lados contra um ataque.] O API Shield também oferece vários outros recursos de segurança para APIs, incluindo o Rate Limiting e a prevenção de perda de dados (DLP)saiba mais sobre o API Shield.