IT & Engineering
O que é uma API RESTful, como ela funciona, suas vantagens e exemplos
As APIs RESTful são as mais usadas no mundo dos serviços web. Elas usam solicitações do protocolo HTTP (Hypertext Transfer Protocol) para criar, ler, atualizar e excluir (CRUD) dados. Elas são populares pela sua simplicidade, escalabilidade, velocidade e capacidade de lidar com todos os tipos de dados.
Neste artigo, vamos nos aprofundar no mundo das APIs RESTful e discutir como elas funcionam, seus usos, suas vantagens e como você pode usar a API de e-mail do Mailgun para enviar, receber e rastrear e-mails.
O que é uma API?
Uma API (Interface de Programação de Aplicações) é um conjunto de regras que dois programas de software usam para se comunicar e trocar dados.
Pense na última vez que você pediu um sanduíche de 30 cm no Subway. Eles ofereceram uma série de opções de tipo de pão, molhos, vegetais e assim por diante. Você informou as suas preferências, e eles prepararam o sanduíche de acordo com os seus requisitos. Eles conseguem fazer o mesmo para todos os clientes porque estabeleceram um padrão de comunicação entre a equipe e a clientela, além de terem descrito todas as opções disponíveis. Os padrões que eles estabeleceram servem como a API, que ajuda você na hora de fazer o pedido e também a equipe na hora de preparar o sanduíche exatamente do jeito que você gosta.
Agora, pense no botão “Fazer login com o Google” ou “Cadastre-se com o Google” que você vê em muitos sites. O Google definiu um padrão de comunicação entre si mesmo e todos os sites do mundo por meio da API de “Login do Google para sites”. A equipe de desenvolvimento web pega a API e a aplica aos botões de login/cadastro em seus sites, e a API entra em ação quando o botão é clicado, obtém seus dados do Google e ajuda você a fazer o login usando esses dados.
Agora que entendemos o que uma API faz, vamos definir rapidamente alguns dos termos que usaremos ao longo deste artigo.
Cliente
Um cliente é um sistema que faz solicitações para acessar dados em um servidor. Na analogia do Subway, o cliente é a pessoa que entrou para comprar um sanduíche. No exemplo em que você usa a sua ID do Google para se cadastrar ou fazer login em um site, o site é o cliente.
Servidor
Um servidor é um sistema que tem os recursos necessários para o cliente. No exemplo do Subway, o servidor é o restaurante. No exemplo da ID do Google, o Google é o servidor.
Recurso
Um recurso é qualquer dado que o servidor possa fornecer. No exemplo do Subway, o sanduíche é o recurso. No exemplo do Google, a sua ID de usuário é o recurso.
Ao discutir sobre APIs, talvez você ouça o termo “identificador de recursos”. Um identificador de recursos não é o recurso em si; é uma ID exclusiva atribuída ao recurso. Pense em um banco de dados com milhares de pessoas colaboradoras em uma empresa. É provável que algumas delas tenham o mesmo nome e sobrenome. Por isso, nas grandes empresas, cada pessoa recebe uma ID exclusiva, evitando confusões na folha de pagamento e nos dias de férias. Da mesma forma, ao usar identificadores de recursos, as APIs garantem que o cliente e o servidor estejam na mesma página sobre os recursos que o cliente está chamando.
Tipos de solicitações de API
Existem quatro tipos de solicitações de API:
- DELETE: para excluir dados existentes
- PUT/PATCH: para atualizar dados existentes/para modificar e substituir dados existentes
- GET: para recuperar dados
- POST: para criar novos dados
O que é uma API RESTful e como ela funciona?
Uma API RESTful é uma API que segue as restrições da arquitetura do Representational State Transfer (REST) . Essas restrições de desenvolvimento – basicamente uma série de regras que as APIs devem seguir – permitem APIs escaláveis, mais rápidas e que oferecem suporte a todos os tipos de dados. Por conta disso, as APIs RESTful se tornaram as APIs mais comuns do mundo, especialmente para serviços web.
O conceito de REST e suas seis restrições foi introduzido pela primeira vez por Roy Fielding na sua dissertação – Architectural Styles and the Design of Network-based Software Architectures – no ano 2000. Esses parâmetros ajudam a equipe de desenvolvimento delineando o que uma API eficaz deve incluir e o que deve ser excluído. Portanto, apesar de existirem restrições, na verdade é muito mais fácil desenvolver, usar e conectar as APIs RESTful do que os equivalentes não RESTful.
Vamos discutir as seis em detalhes.
As seis restrições de arquitetura da estrutura REST
1. Cliente-servidor
Cliente-servidor significa que as funções do servidor e do cliente são distintas e claramente definidas. O servidor cuida exclusivamente do armazenamento de dados, e o cliente lê esses dados (e os modifica, se tiver permissões para tal). Dessa forma, o servidor e o cliente podem escalar e evoluir independentemente um do outro.
2. Interface uniforme
Ter uma interface uniforme significa que o cliente deve receber as informações do servidor em um formato consistente e legível. A interface uniforme deve seguir estes princípios básicos:
- Hypermedia as the Engine of Application State (HATEOAS): as APIs RESTful são orientadas por hipermídia. Isso significa que, para compreender a resposta enviada pelo servidor, o cliente só precisa compreender a hipermídia. Em outros tipos de APIs, você precisa de uma linguagem alternativa chamada de IDL (linguagem de descrição de interface); nas APIs RESTful, esse não é o caso.
- Mensagens autodescritivas: uma mensagem pode ser definida como cada solicitação do cliente para o servidor e cada resposta do servidor para o cliente. Cada mensagem enviada de um lado para o outro entre o cliente e o servidor deve conter informações suficientes para o processamento em si. Isso quer dizer que a solicitação do cliente para o servidor deve identificar o recurso que está tentando acessar, bem como informar exatamente o que deseja fazer com isso (criar, ler, atualizar ou excluir).
- Identificação de recursos: os recursos mencionados nas mensagens que vão e vêm entre o cliente e o servidor devem ser identificáveis por meio de representações. Isso é alcançado ao seguir o padrão Uniform Resource Identifier (URI). Em outras palavras, uma mensagem do servidor para o cliente pode não conter um arquivo real do seu banco de dados, mas uma representação HTML com alguns metadados. Como a representação HTML segue o padrão URI, o cliente consegue lê-la facilmente.
- Manipulação de recursos através de representações: o cliente deve ser capaz de manipular (criar, ler, atualizar, excluir) os recursos ao enviar ao servidor uma representação de como deve ficar a versão final deste recurso. Se o cliente tiver permissões suficientes para manipular dados, o servidor deverá atender à solicitação.
3. Stateless (sem estado)
As APIs RESTful são stateless (sem estado), o que significa que o servidor não armazena nenhuma informação sobre a sessão do cliente. Durante qualquer sessão, um cliente pode fazer várias consultas e enviar diversas solicitações ao servidor. Para a API ser considerada RESTful, cada solicitação deve ser autossuficiente e não conter informações relacionadas a uma solicitação passada, futura ou simultânea. Dessa forma, a carga de processamento no servidor é amplamente reduzida.
4. Capacidade de cache
Quando um usuário faz uma solicitação para obter dados do servidor, essa solicitação viaja do cliente para o servidor através de um cache de informações armazenadas. Os dados já presentes no cache podem ser recuperados sem gerar qualquer sobrecarga no servidor.
A equipe de desenvolvimento deve rotular os dados que viajam do servidor para o cliente como armazenáveis em cache (cacheable) ou não. Os dados armazenáveis em cache ficam guardados no cache do cliente e podem ser acessados conforme a necessidade. Isso torna o acesso mais rápido, sem sobrecarregar o servidor se o cliente quiser acessar esses mesmos dados novamente.
5. Sistema em camadas
Em um sistema em camadas, há múltiplas camadas, cada uma com uma finalidade de alto nível. Pense em um sistema padrão de quatro camadas com uma camada de banco de dados que lida com os dados, uma de persistência lidando com a forma como os dados são mantidos no banco de dados, uma de negócios voltada a todos os tipos de lógica corporativa, e uma de apresentação que transforma os dados em um formato que possa ser compreendido.
As camadas são organizadas de tal maneira que apenas interagem com as camadas posicionadas logo acima e abaixo delas. Às vezes, em vez de criar quatro camadas, a equipe de desenvolvimento decide adotar três, usando uma só camada para servir como a junção do banco de dados e da persistência.
Depois de configurar as camadas, a equipe adiciona os componentes de proxy e de gateway, dividindo as diferentes funções entre as variadas camadas. A quantidade de camadas e a maneira de organizá-las dependem exclusivamente dos requisitos do sistema.
6. Código sob demanda (Code-on-demand)
O código sob demanda é a única restrição de arquitetura opcional para que uma API seja considerada RESTful. A API deve ser construída de um jeito que o cliente tenha a opção de solicitar o código executável do servidor. Na maioria das vezes, esse código executável assume a forma de applets ou de scripts. Ao receber esse código do servidor, o cliente o executa inteiramente em seu próprio sistema.
Por exemplo, pense no passado, quando a gente precisava do Adobe Flash Player para rodar certas animações na maioria das páginas da web: se você não tivesse o Flash Player, essas seções não carregavam e acabavam mostrando um erro.
Os componentes de uma API RESTful
As APIs RESTful são compostas por estes componentes:
1. Os endpoints
O endpoint descreve a localização dos dados dentro do servidor. Os endpoints são URLs dos recursos que você está tentando acessar usando a API.
2. O método
Já abordamos os quatro métodos HTTP (GET, PUT, POST, DELETE) que as APIs usam para manipular dados. A solicitação de API deve usar um desses métodos para que o servidor consiga entender o que precisa ser feito.
3. Os cabeçalhos
As APIs RESTful contêm cabeçalhos HTTP com as informações de metadados, proxies e tipos de conexão HTTP. Em uma mensagem de solicitação, o cabeçalho contém as informações sobre a natureza da solicitação, além dos tipos de respostas válidas.
Em uma mensagem de resposta, o cabeçalho também carrega os dados referentes ao status da solicitação junto com os códigos de status. O erro “404”, por exemplo, significa que a API não conseguiu recuperar os dados solicitados a partir do servidor.
4. Os dados (ou o corpo)
Os dados (ou o corpo) da API RESTful consistem em informações adicionais sobre os recursos solicitados pelo cliente. No caso de uma solicitação GET simples, nenhuma informação extra é necessária. Na solicitação POST, o cliente irá declarar o tipo de conteúdo direto no cabeçalho, enquanto o conteúdo em si ficará no corpo. Isto pode ser um novo recurso que o cliente está tentando enviar para o servidor. O servidor avalia se o tipo de conteúdo é ou não aceitável para continuar buscando o recurso no corpo.
Vantagens das APIs RESTful
As APIs RESTful são mais rápidas, flexíveis, escaláveis e incrivelmente versáteis. Confira algumas das principais vantagens deste tipo de API:
1. Compatível com todos os formatos de dados
Em outros tipos de APIs, você se limita na escolha dos formatos de dados. Entretanto, as APIs RESTful oferecem suporte a todos os formatos de dados.
Nas APIs RESTful, você consegue enviar uma solicitação HTTP, receber os dados em JSON (JavaScript Object Notation) como resposta e analisar os dados para serem usados em suas aplicações clientes. Isso faz com que elas sejam a escolha ideal para os navegadores da web. Além disso, você pode integrar facilmente essas APIs ao seu site que já existe.
3. Uso de menos largura de banda
Graças ao JSON, as APIs RESTful consomem bem menos largura de banda em comparação aos outros tipos de APIs. Contudo, isto é uma verdade apenas para as APIs web com base em JSON. Uma API web baseada em XML terá um payload similar ao do seu equivalente não RESTful, independentemente de seguir as restrições da arquitetura REST ou não.
4. Não precisa ser projetada do zero
Na maioria dos casos, é possível obter modelos que podem ser modificados e usados. A Por exemplo, NetApp e Mailgun disponibiliza um tutorial completo e o código-fonte para você construir uma API privada. Em alguns casos, talvez ao desenvolver uma API privada, você precisará projetar a API começando do zero, e para isso vai poder contar com muito suporte do Stack Overflow.
5. Mais facilidade para a equipe de desenvolvimento
As APIs RESTful usam os métodos HTTP para fazer essa comunicação. Você tem a liberdade de usar o Python, JavaScript (Node.js), Ruby, C#, entre diversas outras linguagens, para desenvolver as APIs, o que as torna muito mais fáceis de trabalhar de acordo com a maioria dos profissionais de desenvolvimento.
Para que servem as APIs RESTful?
As APIs RESTful são famosas na indústria de SaaS, sendo excelentes para serviços da web. Estas APIs são usadas como:
APIs públicas para acessar dados de uso amplo
As APIs disponibilizadas pelo Twitter, Facebook e Google são os exemplos mais notáveis de APIs públicas. Elas estão disponíveis para todas as pessoas, permitindo que simplesmente peguem o código da API e o implementem em seus sites, a fim de que seu público faça o login usando as contas próprias das redes sociais.
APIs privadas para o acesso a dados dentro de uma organização
As APIs RESTful também são amplamente usadas na comunicação interna e privada dos programas de software usados em uma organização. Pense em uma agência oferecendo serviços de desenvolvimento web para sua clientela. A empresa terá os departamentos de RH, finanças, vendas, suporte, marketing e também os de produção e controle de qualidade. Todos esses departamentos estarão usando aplicações de software específicas voltadas a eles, e também algumas outras de uso comum para gerenciar a folha de pagamento, folgas remuneradas, avaliações de desempenho, etc. Os programas em si precisarão se comunicar com um repositório central de dados encarregado de oferecer à liderança uma visão de alto nível. Esse repositório central poderá facilmente se comunicar com os demais programas a partir das APIs RESTful.
APIs de terceiros para o acesso a recursos e dados pagos
Muitas organizações usam APIs de terceiros para realizar a comunicação entre seus programas de software e aqueles usados pelas suas parcerias ou sua clientela. Um ótimo exemplo disso é a API de e-mail do Mailgun. . Você pode usar essa API para integrar os e-mails com as suas aplicações de vendas e de marketing.
Para as pessoas usando o seu software interno, não há nenhuma mudança substancial, com exceção de algumas novas funcionalidades à disposição: a partir de agora, é possível enviar campanhas de e-mail usando o mesmo sistema antes restrito apenas ao gerenciamento de conteúdo, marketing, engajamento dos clientes e tarefas de suporte. Por outro lado, lá no back-end, a API RESTful do Mailgun pega essas solicitações no seu software, encaminha para o Mailgun e volta com as devidas respostas.
Use a API do Mailgun para elevar o nível dos seus e-mails
A API do Mailgun se integra com o seu software atual e abre as portas para criar campanhas de e-mail muito mais eficientes e poderosas. A API pode tranquilamente coletar e modificar os dados de clientes a partir do seu CRM ou outras ferramentas, possibilitando que você envie e-mails em massa focados nos segmentos do público, faça o gerenciamento de listas de e-mails, e garimpe as análises detalhadas a respeito do comportamento da sua base em suas caixas de entrada. A API de e-mail do Mailgun é RESTful, ou seja, consegue se integrar com a totalidade dos provedores de e-mail. Além disso, a plataforma foi desenvolvida com a segurança e a fidelidade em mente, a fim de reduzir o máximo possível os riscos relacionados aos dados do público e garantir a entrega nas caixas de entrada, jamais na pasta de spam.
Precisa de mais informações sobre a API de e-mail do Mailgun? Você a encontra aqui.