Artigo original: What is an API and How Does it Work? APIs for Beginners

Quando comecei a aprender a programar, o termo API sempre me assombrava. Eu não conseguia entender o que realmente significava porque ouvia as pessoas falando sobre APIs em diferentes contextos.

O maior desafio era que eu não conseguia encontrar recursos para aprender sobre APIs em termos simples.

Agora que sei como as APIs funcionam, decidi escrever este guia para qualquer iniciante que tenha dificuldade para entender esse tópico que não é tão complicado, mas que ainda é confuso, em desenvolvimento para a web e em engenharia de software.

O que é uma API?

API significa Interface de Programação de Aplicações. A aplicação pode ser qualquer software que execute uma tarefa específica e a interface é um ponto onde duas aplicações se comunicam.

Uma aplicação atua como client e o outro atua como servidor. Um client solicita algum recurso (por exemplo, uma foto) e o servidor envia essa foto para o client.

O client, aqui, pode ser seu celular, computador desktop ou laptop ou qualquer dispositivo que você usa para navegar na internet. O servidor é um computador maior, que armazena os dados que você deseja (uma foto, no nosso caso).

unsplash-1

Suponha que eu queira uma fotografia da natureza para enviar para meu blog de viagens. Eu posso ir ao site do Unsplash, digitar "natureza" na barra de pesquisa e ele retornará um grande número de fotografias da natureza.

Essa é uma API trabalhando nos bastidores para fazer a conversa entre o Unsplash e eu acontecer.

Como as APIs funcionam?

Os computadores seguem um protocolo para se comunicar uns com os outros. Um protocolo nada mais é do que um conjunto de regras que os computadores seguem para se comunicar. Qualquer computador que não siga o protocolo quebra o fio da comunicação.

Você pode ter usado Bluetooth para compartilhar dados no passado. Bluetooth nada mais é do que um protocolo para dispositivos móveis se comunicarem entre eles a uma distância menor.

Quando você pede ao seu amigo para enviar fotos de sua última viagem, seu dispositivo atua como client e o dispositivo do seu amigo (aquele que envia as fotos) é o servidor.

Esse é apenas um exemplo de protocolo. Temos um grande número de protocolos no mundo da ciência da computação – um para quase tudo.

Na web, usamos o protocolo HTTP (em inglês, Hyper Text Transfer Protocol). As APIs disponíveis na web usam o protocolo HTTP por vários motivos – é fácil de usar e é popular, por exemplo.

As comunicações que ocorrem pelo protocolo HTTP também são conhecidas como ciclo de solicitação-resposta porque é exatamente assim que o protocolo funciona. O client envia uma solicitação ao servidor e o servidor responde ao client em relação a essa solicitação.

Ao contrário dos humanos, os computadores precisam ser rígidos para se comunicarem uns com os outros ou eles quebram a comunicação. Por esse motivo, um client (computador/dispositivo solicitante) precisa de um conjunto de informações para enviar com a solicitação para que o servidor responda de acordo. Essas informações incluem:

  1. URL – um endereço da web onde você deseja fazer uma solicitação
  2. Método – se você deseja dados já armazenados em algum lugar ou deseja salvar novos dados em um banco de dados
  3. Cabeçalho – todas as informações relevantes sobre sua solicitação, incluindo em qual formato o dispositivo client espera receber os dados
  4. Corpo – os dados reais da solicitação

No nosso exemplo do Unsplash, o URL é https://unsplash.com/s/photos/nature. O método é GET, porque queremos que o servidor recupere imagens da natureza. O cabeçalho inclui informações como o formato que nosso computador espera obter e aceitar – como o idioma, o idioma do dispositivo, nosso sistema operacional e assim por diante. O corpo inclui os dados que precisamos enviar ao servidor (a palavra-chave natureza, por exemplo).

Existem quatro tipos de métodos para solicitações HTTP que abordaremos em breve. Por enquanto, saiba apenas que um método indica o que você deseja fazer com os dados disponíveis no servidor. Por exemplo, se você deseja esses dados como documentos ou se deseja salvar uma nova entrada em dados salvos em algum lugar.

Quando um client faz uma solicitação, o servidor responde a essa solicitação. A resposta pode ser os dados que o client solicitou ou um erro.

Assim como uma resposta, uma solicitação tem uma estrutura que inclui URL, código de status, cabeçalho e corpo. Em uma solicitação, temos um método, que possui quatro tipos. Na resposta, temos um código de status, que indica se uma solicitação foi aceita ou recusada.

Métodos HTTP

Existem quatro métodos HTTP disponíveis e cada um tem sua funcionalidade exclusiva.

  1. GET: como já discutido, indica que o client está solicitando que os dados sejam enviados do servidor.
  2. POST: esse método informa ao servidor que o client deseja criar uma entrada em um banco de dados. Por exemplo, salvar uma nova postagem em um blog em um banco de dados de todos os blogs anteriores.
  3. DELETE: como o nome em inglês sugere, o client deseja excluir um registro de dados de um banco de dados.
  4. PUT: esse método é usado quando um client deseja atualizar ou editar um registro de dados. Por exemplo, alterar sua senha do Facebook.

Códigos de status HTTP

Existe uma lista enorme de códigos de status HTTP, mas vamos dar uma olhada em alguns dos mais comuns:

  1. 200 OK: indica que a solicitação foi atendida com sucesso pelo servidor
  2. 201 CREATED: a entrada de dados cuja criação você solicitou foi criada
  3. 404 NOT FOUND: indica que o recurso que você solicitou não foi encontrado pelo servidor
  4. 500 INTERNAL SERVER ERROR: significa que ocorreu um erro no lado do servidor e que ele não pôde atender à sua solicitação

Não há necessidade de memorizar esses códigos de status, pois a lista é enorme e você os aprenderá inconscientemente à medida que os encontrar em sua jornada de desenvolvimento.

Ainda assim, existem vários códigos de status que indicam uma resposta genérica, como você pode ver aqui:

  1. 100s: respostas informativas, indicando o progresso da solicitação
  2. 200s: sucesso, indicando o sucesso da solicitação
  3. 300s: redirecionamento, indicando que a solicitação teve que ser redirecionada para outro lugar
  4. 400s: erros do client, indicando erros que ocorreram no lado do client
  5. 500s: erros do servidor, quando o servidor falha ao responder a uma solicitação válida do client

Tipos de APIs

Você se lembra quando eu disse que ficava confusa quando as pessoas falavam sobre APIs em diferentes contextos? Isso ocorre porque também temos diferentes tipos de APIs disponíveis.

As que falamos neste artigo são APIs da web que usam o protocolo HTTP. Os desenvolvedores podem usá-las para criar uma melhor experiência do usuário para seus usuários.

Outros tipos incluem as APIs internas, que estão ocultas de usuários externos e que são usadas apenas dentro de uma empresa.

Existem também APIs abertas, que estão disponíveis para serem usadas por qualquer pessoa gratuitamente (como a OpenWeatherMap API, a API de mapa meteorológico aberto). Você pode ter APIs de parceiros, que são compartilhadas apenas entre parceiros de negócios para realizar suas tarefas de negócios e APIs compostas, que combinam sequencialmente várias solicitações de API em uma única chamada de API para reduzir a carga do servidor e criar uma experiência mais rápida.

Recursos para aprender mais sobre APIs:

Se você quiser aprender mais sobre a criação de APIs, aqui há um texto para começar (em inglês).

Aqui está um tutorial sobre tipos de APIs, ferramentas de testes e documentação (em inglês).

Aqui está uma ficha informativa sobre a Fetch API (em inglês), para você começar a aprender mais sobre ela.

Conclusão

Uma API é uma interface para dois computadores se comunicarem para realizar tarefas na internet.

As APIs da web seguem o protocolo HTTP para se comunicarem. Esse protocolo possui uma estrutura específica de solicitação e resposta.

Existem diferentes métodos para realizar diferentes tarefas e vários códigos de status estão disponíveis. Eles indicam se a solicitação foi bem-sucedida, recusada ou está em estado pendente.

Interessado em se conectar pelo LinkedIn? Fale com a autora por lá.