Em 2000, foi criada uma nova norma de interação entre clientes e servidores no âmbito da conceção da arquitetura de interfaces de software. Chamava-se REST. O principal iniciador deste conceito foi Roy Fielding, um dos criadores do protocolo HTTP. No mundo atual, a API REST está a tornar-se uma ferramenta cada vez mais popular para o intercâmbio de dados, proporcionando uma interação eficaz entre todos os tipos de aplicações.
Uma API RESTful é uma lista de princípios e regras para organizar a interação entre um cliente e um servidor. Permite aos programadores criar aplicações Web facilmente modificáveis e escaláveis. A ideia básica subjacente ao REST consiste em representar recursos acessíveis através de identificadores URI únicos, manipulando-os através de métodos HTTP normais.
O que é uma API? É uma interface que ajuda diferentes programas a comunicar entre si. Define como os pedidos podem ser efectuados e quais as respostas que podem ser recebidas. A API serve de base para a integração de diferentes sistemas e é uma parte fundamental do atual desenvolvimento de aplicações.
O que é REST? É um estilo arquitetónico baseado em princípios que tornam a aplicação de serviços Web conveniente e fácil de compreender. Baseia-se em protocolos HTTP e utiliza métodos padrão, que serão desconstruídos a seguir. Cada recurso disponível através da API tem o seu próprio identificador único (URI), o que facilita o acesso ao mesmo.
Os principais são:
A utilização desta ferramenta oferece muitas vantagens.
Apesar das vantagens óbvias do REST, outras tecnologias, como SOAP e GraphQL, também estão no mercado. Enquanto a primeira é utilizada em aplicações específicas e fornece as suas próprias funcionalidades, a segunda é desenvolvida pelo Facebook. O GraphQL é uma alternativa ao REST. É mais adequado para projectos de grande escala.
O processo de interação cliente-servidor pode ser dividido em várias etapas:
Os métodos HTTP clássicos são utilizados para trabalhar com recursos:
GET
: Usado para recuperar dados (por exemplo, GET /cities
retorna uma lista de cidades);POST
: Utilizado para criar novos recursos (por exemplo, POST /istanbul
adiciona um novo café em Istambul);PUT
: Utilizado para atualizar recursos existentes (por exemplo, PUT /cities
altera a lista de cidades);DELETE
: Utilizado para eliminar recursos (por exemplo, DELETE /istanbul
elimina um café em Istambul).Cada pedido HTTP devolve um código de estado que indica o resultado da operação. Um código que começa com 2 indica uma execução bem sucedida, enquanto códigos com 4 ou 5 indicam erros.
A API REST tornou-se um padrão no desenvolvimento de serviços Web, proporcionando aos utilizadores uma boa ferramenta para a criação de soluções flexíveis e escaláveis. Os seus princípios e vantagens contribuíram para a sua popularidade generalizada e para a sua utilização numa grande variedade de aplicações, desde a construção de pequenas aplicações Web até sistemas distribuídos complexos. Nesta introdução alargada à API REST, analisaremos mais detalhadamente os seus principais componentes, compará-la-emos com outras tecnologias, discutiremos a utilização da REST na prática e abordaremos as perspectivas do seu desenvolvimento.
Ao interagir com as API REST, é importante ter em conta os formatos de dados utilizados. O formato mais comum é o JSON (javaScript), que é fácil de ler e escrever, o que o torna ideal para a transferência de dados. No entanto, são por vezes utilizados outros formatos, como XML e HTML. A escolha do formato de dados pode depender dos requisitos da aplicação e das preferências do programador. O formato JSON suporta estruturas de dados complexas e permite uma utilização económica da largura de banda, o que constitui outra vantagem da API REST.
A segurança é um aspeto importante quando se trabalha com APIs REST. Um dos métodos de autenticação é a utilização de tokens. Este método permite o acesso seguro a recursos protegidos. Um dos métodos mais comuns é a utilização de tokens JWT. Este método permite que o cliente aceda à API durante um determinado período de tempo após a autenticação. O servidor não precisa de armazenar o estado, reforçando o conceito "sem estado" do REST.
Além disso, essa autenticação pode ser aumentada com o OAuth 2.0. Isto acrescenta uma camada extra de segurança e simplifica a integração com as redes sociais e outras plataformas.
Com a crescente popularidade dos smartphones, a API REST tornou-se um importante conjunto de ferramentas para os programadores que criam aplicações móveis. A utilização da API REST permite que as aplicações interajam com servidores remotos, recebam e actualizem dados em tempo real. Assim, é possível criar aplicações complexas: mensageiros, redes sociais e outras soluções de software que requerem um acesso de alta velocidade à informação.
Para uma melhor compreensão da API REST, vamos considerar um exemplo hipotético de trabalho com uma API para gestão de bibliotecas. Suponhamos que temos uma API RESTful que nos permite realizar as seguintes acções
pedido GET
a /books
para obter informações sobre todos os livros disponíveis;pedido POST
para /books
com dados sobre um novo livro em formato JSON;pedido PUT
para /books/{id}
, em que {id}
é um identificador único do livro;pedido DELETE
para o mesmo URI para efetuar a operação.Estes exemplos simples demonstram como a gestão eficiente de recursos pode ser efectuada utilizando APIs REST.
Existem muitas funcionalidades e bibliotecas que facilitam a colaboração. Por exemplo, o Postman é uma aplicação popular que permite aos programadores enviar pedidos, testar e analisar respostas. Outras ferramentas, como o Swagger, permitem documentar API e gerar automaticamente código numa variedade de linguagens de programação.
Em Python, é possível utilizar bibliotecas (Requests) que fornecem uma interface simples para enviar pedidos HTTP e processar as respostas. Em javascript, especialmente no desenvolvimento de front-end, utilize a API Fetch ou Axios.
A API REST continua a ser uma das ferramentas mais populares para a interação cliente-servidor. Os seus princípios proporcionam flexibilidade, escalabilidade e facilidade de utilização, tornando-a uma solução ideal para a maioria das aplicações Web modernas. Apesar do surgimento de alternativas (GraphQL.)