A API ou Interface de Programação de Aplicativos apresenta funções e regras que permitem a interação e comunicação entre diferentes aplicativos. Essas interfaces facilitam a integração de aplicativos, permitindo que os desenvolvedores criem produtos digitais poderosos.
A API faz a mediação entre aplicativos por meio de solicitações e respostas. Por exemplo, o registro no aplicativo por meio da conta existente do usuário no Twitter ocorre por meio da API do Twitter que os desenvolvedores integraram ao aplicativo. A API usa vários protocolos e arquiteturas para enviar solicitações e respostas:
- XML-RPC — permite a troca de funções entre redes. XML-RPC usa XML para descrever respostas/solicitações e protocolos HTTP para transferência de informações do cliente para o servidor.
- JSON-RPC é um RPC leve semelhante ao XML. Aqui o protocolo é codificado em JSON; permite receber chamadas ao servidor com respostas assíncronas.
- SOAP — um protocolo de acesso a objetos simples para troca de informações estruturadas ao implementar serviços da Web em redes de computadores. SOAP usa XML para autenticação, autorização e comunicação de processo em sistemas operacionais. Ele permite que os clientes chamem serviços da web e recebam respostas independentemente da plataforma e do idioma.
- API REST (transferência de estado representativa) — um estilo de arquitetura usando implementações cliente-servidor de forma independente. REST usa o protocolo HTTP para comunicação.
Neste post, focamos na API REST, a definimos e analisamos como ela difere de outras APIs.
Definindo a API REST
REST é um estilo de arquitetura para projetar APIs por meio do protocolo HTTP. Seu principal benefício é sua grande flexibilidade.
Os desenvolvedores usam a API REST sempre que há necessidade de fornecer dados ao usuário de um aplicativo ou site da Web diretamente do servidor. Os principais componentes da API REST:
- Cliente — um cliente ou programa lançado no lado do usuário (em seu dispositivo) iniciando a comunicação.
- Servidor — um servidor usando APIs como acesso às suas funções e dados.
- Recurso — qualquer conteúdo (vídeo, texto, imagem) que o servidor transmita ao cliente.
Como funciona a API REST
A API REST se comunica por meio de solicitações HTTP, completando as seguintes funções — criação, leitura, atualização e exclusão de dados. Eles também são conhecidos como operações CRUD. REST fornece as informações sobre os recursos solicitados e usa quatro métodos para descrever o que fazer com um recurso:
POST — criando um recurso;
GET — obtendo um recurso;
PUT — atualizando um recurso;
DELETE — excluindo um recurso.
Recurso
Um recurso é um conceito crítico na API REST, uma abstração de informações. Pode ser qualquer informação: documento, imagem, serviço temporário.
O estado do recurso em um determinado momento é conhecido como representação do recurso, que consiste em dados, metadados que descrevem os dados e links de hipermídia para ajudar os clientes a passar para o próximo estado.
As informações podem ser entregues ao cliente em vários formatos: JSON, HTML, XLT, Python ou texto simples. O mais popular e usado é o JSON porque é legível por humanos e por máquina e independente de linguagem.
Para acessar um recurso, um cliente precisa fazer uma solicitação. Após recebê-lo, o servidor gerará uma resposta com dados codificados sobre um recurso.
A estrutura da solicitação inclui quatro componentes principais: o método HTTP (CRUD que mencionamos anteriormente), endpoints, cabeçalhos e corpo.
O método HTTP descreve o que deve ser feito com o recurso. Logo acima, mencionamos quatro métodos disponíveis: POST, GET, PUT, DELETE.
O endpoint contém um URI — Uniform Resource Identifier, que indica como e onde o recurso pode ser encontrado. Uma URL ou Local de Recurso Uniforme é o tipo de URI mais comum, representando um endereço da Web completo.
Os cabeçalhos contêm os dados relacionados ao cliente e ao servidor. Os cabeçalhos incluem dados de autenticação: chave API, nome, endereço IP que pertencem ao computador no qual o servidor está instalado e também as informações sobre o formato da resposta.
O corpo é usado para enviar informações adicionais ao servidor, como dados que você deseja adicionar.
Princípios da API REST
O REST não está vinculado a nenhuma tecnologia ou plataforma específica. É independente de idioma. Também não especifica precisamente como construir a API. Mas usa seis restrições arquitetônicas. A interface pode ser chamada de API REST válida seguindo essas restrições. Eles descrevem como o servidor processa solicitações e responde a elas.
Servidor cliente
A API REST implementa um estilo de arquitetura cliente-servidor. O cliente está enviando solicitações de recursos e não está associado ao armazenamento de dados. O armazenamento de dados permanece dentro do servidor. Os servidores não estão envolvidos na comunicação com a interface do usuário. O cliente e o servidor evoluem de forma interdependente. Esse fator torna o REST ainda mais flexível e escalável.
Interface uniforme
A interface unificada é um fator essencial que diferencia a API REST. Afirma que existe uma única forma de comunicação com o servidor, não implicando o tipo de aplicação e dispositivo.
A interface uniforme tem quatro princípios:
- Identificação de recursos. Cada recurso deve ter uma identificação independente do estado dos recursos. A URL funciona como um identificador.
- Manipulação de recursos através de representações. Uma representação de recurso (que o cliente possui) contém os dados necessários para excluir ou modificar o recurso. O cliente envia uma representação de que o servidor (um objeto JSON) precisa modificar, remover ou adicionar.
- Mensagens autodescritivas. Tais mensagens possuem todas as informações para que o destinatário possa entender. Nenhuma informação adicional é necessária em documentação ou mensagens separadas. Cada mensagem tem informações suficientes para o servidor analisar a solicitação.
- Hipermídia como motor do estado da aplicação. A hipermídia requer o uso de links para cada resposta para que o cliente possa encontrar outros recursos. No REST, a hipermídia é usada para todas as interações.
Sem estado
Isso significa que o servidor não contém nenhum dado sobre o cliente. Todas as informações necessárias para o processamento da solicitação estão incluídas na solicitação. O cliente armazena todas as informações da sessão.
Armazenável em cache
Cada resposta deve ter as informações dizendo se ela pode ser armazenada em cache ou não e o período em que a resposta pode ser armazenada em cache. Se for armazenável em cache, em solicitações semelhantes, o cliente poderá usar os mesmos dados sem enviar solicitações repetidamente ao servidor. Ajuda a melhorar o desempenho e a disponibilidade.
Sistema em camadas
REST implementa a hierarquia de camadas, que cria certas restrições no comportamento dos componentes. Em um sistema em camadas, os componentes só podem ver os componentes localizados nos níveis mais próximos e aqueles com os quais interagem.
Código sob demanda
É um recurso opcional que permite que os clientes baixem e executem o código.
O que diferencia a API REST?
Os seis princípios da API REST podem ser considerados as principais diferenças entre essa interface e outros tipos. Além disso, vários parâmetros distinguem REST.
Primeiro, a própria essência do REST determina sua incompatibilidade com outros tipos. É um estilo arquitetural onde uma arquitetura representa um conjunto de requisitos que você precisa seguir para fornecer um serviço web RESTful. Por exemplo, SOAP e RPC são protocolos de mensagens que descrevem mensagens. Ao contrário do estilo arquitetural, que especifica apenas os requisitos (restrições) que a mensagem deve atender.
Estrutura
Normalmente, a API segue o formato app-to-app, enquanto o REST segue uma estrutura diferente — Client-Server. O cliente e o servidor estão evoluindo de forma independente, proporcionando mais flexibilidade no trabalho.
Formato de troca de mensagens
As APIs geralmente usam formatos de mensagem específicos; por exemplo, SOAP usa XML. REST não segue um princípio tão estrito. Ele pode usar quase qualquer formato para trocar dados. No entanto, JSON agora é o mais popular.
Existem razões evidentes por trás da popularidade do JSON - é legível por humanos e fácil de analisar o formato de troca de dados. JSON é independente de linguagem e você pode usá-lo com qualquer linguagem além de JavaScript.
Flexibilidade
REST é um estilo de arquitetura flexível, então os desenvolvedores o utilizam amplamente. Comparado com o SOAP — um protocolo mais complexo com recursos de segurança avançados que exigem mais largura de banda, o REST consiste em diretrizes simples que permitem que os desenvolvedores usem esses requisitos em seu formato. A arquitetura oferece alto desempenho, tornando-a especialmente requisitada para dispositivos móveis, onde a velocidade de download é importante.
Como vemos, REST tem certas vantagens sobre outras APIs conhecidas. É por isso que todas as empresas líderes, como Twitter e Google, o implementaram em seus produtos. Afinal, é a maneira ideal e fácil de transferir dados para desenvolvedores em todo o mundo e um mecanismo comprovado para criar interfaces eficientes e escaláveis para desenvolvimento de software.