O Representational State Transfer (REST) é uma arquitetura abstrata onde fornece alguns princípios para criação de APIs. No entanto, existem 6 princípios que podemos seguir para criar uma REST API, porém você pode estar se perguntando, como podemos ter uma RESTful API? Simples, garantindo que todos princípios REST estejam sendo aplicados.
Cliente-Servidor: Desacoplar cliente do servidor, deixando as duas aplicações independentes. O cliente não precisa ter informações diretas do servidor, apenas como requisita-las e interpretar as respostas.
Stateless (Sem Estado): Não manter nenhum dado enviado do cliente armazenado do lado do servidor, sempre enviar as informações requeridas pelas requisições e manter os dados da sessão no cliente. Um exemplo seria o token de validação que ao fazer as requisições no servidor não pode ser armazenado no servidor, todas requisições tem que validar se o token recebido é legitimo.
Cacheabilidade: Dados devem ser armazenáveis em cache para eliminar a necessidade de algumas interações cliente-servidor. Um exemplo seria uma rota em uma API onde está sendo feita muitas requisições em um período curto de tempo, o servidor pode cachear o cabeçalho e o cliente pode manter essas respostas prontas para as próximas chamadas, tirando uma carga desnecessária do servidor.
Interface Uniforme: Podemos dizer que seria manter um padrão na construção da API, deixando as rotas sólidas e bem definidas, utilizando URI (Uniform Resource Identifiers) contendo as informações que o cliente precise e também os verbos padrão HTTP (GET, POST, PUT, DELETE).
Sistema em Camadas: A API deve ser criada em camadas, para facilitar a adição de intermediadores assim mediando por camadas hierárquicas, um exemplo seria utilizar uma CDN (Content Delivery Network) onde o cliente acessa o intermediador (que seria a CDN) e ele que faria a requisição para o servidor, no caso o cliente não precisa ter informações das camadas do servidor, somente da informação final.
Codificação (Opcional): Os recursos devem ser representado da forma que o cliente vai entender, um exemplo seria enviar códigos JavaScript de uma rota no servidor para executar no cliente. Porém é opcional, o que podemos adaptar para a necessidade de cada cliente.
Oferece uma facilidade maior para integração, escalabilidade e eficiência para sistemas distribuídos. É uma excelente opção para criar microsserviços de leve manutenção e agilidade na integração a outros componentes do seu ecossistema.
As APIs REST são leves, o que as torna ideais para contextos mais recentes, como Internet das Coisas (IoT), desenvolvimento de aplicativos móveis, computação sem servidor, serviços web, E-commerce e também entre outros vários casos de uso.