Este artigo é uma introdução aos serviços da Web RESTful e uma visão geral do REST e HTTP.
Ela inicia uma série de postagens sobre o desenvolvimento da API REST:
- Introdução à API REST - Serviços da Web RESTful
- Diferenças entre REST e SOAP
- Desenvolvimento da API REST - o que é primeiro contrato (primeiro contrato)?
- Desenvolvimento da API REST - o que é o Code First (code first)?
- API REST - O que é o HATEOAS?
- Recomendações da API REST - Exemplos de design de serviços da Web em Java e Spring

REST significa REpresentational State Transfer (Wikipedia: “transferindo o estado da apresentação”). Essa é uma abordagem arquitetônica popular para criar APIs no mundo moderno.
Você aprenderá:
- O que é REST?
- Em que a API REST se baseia?
- Como o HTTP é usado ao criar uma API REST?
- O que é um recurso?
- Como você define os recursos da API REST?
- Quais são as melhores práticas para o desenvolvimento de uma API REST?
O que é REST?
REST significa REpresentational State Transfer. Foi um termo originalmente cunhado por Roy Fielding, que também foi um dos criadores do protocolo HTTP. Um recurso distintivo dos serviços REST é que eles fazem o melhor uso do protocolo HTTP. Agora vamos dar uma olhada rápida no HTTP.
Visão geral do HTTP
Vamos abrir o navegador primeiro e ir para a página da web:

E, em seguida, clique em uma das páginas de resultados:

Em seguida, podemos clicar no link da página em que estamos:

E vá para outra página:

É assim que geralmente navegamos na web.
Quando navegamos na Internet, muitas coisas acontecem nos bastidores. A seguir, é apresentada uma visão simplificada do que está acontecendo entre o navegador e os servidores em execução nos sites visitados:

Protocolo HTTP
Quando você insere um URL no navegador, por exemplo
www.google.com , uma solicitação ao servidor é enviada ao servidor especificado no URL. Em seguida, este servidor forma e emite a resposta. O formato desses pedidos e respostas é importante. Esses formatos são definidos pelo protocolo
HTTP Hyper Text Transfer Protocol .
Quando você digita o URL no navegador, ele envia uma solicitação GET ao servidor especificado. O servidor responde com uma resposta HTTP que contém dados
HTML - Hyper Text Markup Language . O navegador recebe esse código HTML e o exibe na tela.
Suponha que você preencha um formulário em uma página da web com uma lista de elementos. Nesse caso, quando você clica no botão
Enviar , a solicitação HTTP
POST é enviada ao servidor.
Serviços da Web HTTP e RESTful
O HTTP fornece uma camada básica para a criação de serviços da web. Portanto, é importante entender o HTTP. Aqui estão algumas abstrações principais.
Recurso
Um recurso é uma abstração chave na qual o protocolo HTTP se concentra. Um recurso é tudo o que você deseja mostrar ao mundo externo por meio de seu aplicativo. Por exemplo, se escrevermos um aplicativo de gerenciamento de tarefas, as instâncias de recursos serão as seguintes:
- Usuário específico
- Tarefa específica
- Lista de tarefas
URI do recurso
Ao desenvolver serviços RESTful, você deve se concentrar nos recursos do aplicativo. A maneira como identificamos um recurso a fornecer é atribuir a ele um URI, o identificador universal de recursos. Por exemplo:
- Criar usuário: POST / users
- Excluir usuário: DELETE / users / 1
- Obter todos os usuários: GET / users
- Obter um usuário: GET / users / 1
REST e recursos
É importante observar que, com o REST, você precisa pensar no aplicativo em termos de recursos:
Determine quais recursos você deseja abrir para o mundo exterior.
Use verbos já definidos pelo protocolo HTTP para executar operações nesses recursos.
Veja como o serviço REST é geralmente implementado:
- Formato de troca de dados : não há restrições. JSON é um formato muito popular, embora outros como XML possam ser usados.
- Transporte : sempre HTTP. O REST é completamente baseado em HTTP.
- Definição de serviço : Não há padrão para isso e o REST é flexível. Isso pode ser uma desvantagem em alguns cenários, pois um aplicativo consumidor pode precisar entender os formatos de solicitação e resposta. No entanto, linguagens de definição de aplicativo da Web, como WADL (Web Application Definition Language) e Swagger, são amplamente usadas.
O REST se concentra nos recursos e na eficiência com que você executa operações com eles usando HTTP.
Componentes HTTP
HTTP define a seguinte estrutura de solicitação:
- linha de solicitação ( linha de solicitação ) - define o tipo de mensagem
- cabeçalhos de solicitação ( campos de cabeçalho ) - caracterizam o corpo da mensagem, parâmetros de transmissão e outras informações
- corpo da mensagem ( corpo ) - opcional
HTTP define a seguinte estrutura para uma mensagem de resposta:
- linha de status, incluindo código de status e mensagem de razão
- campos de cabeçalho de resposta
- corpo adicional da mensagem ( corpo )
Métodos de solicitação HTTP
O método usado na solicitação HTTP indica qual ação você deseja executar com esta solicitação. Exemplos importantes:
- GET : obtenha informações detalhadas sobre os recursos
- POST : crie um novo recurso
- PUT : atualiza um recurso existente
- DELETE : Excluir recurso
Código de status de resposta HTTP
O código de status está sempre presente na resposta HTTP. Exemplos típicos:
- 200 - sucesso
- 404 - página não encontrada
Sobre esta questão, há um
vídeo do autor.
Sumário
Este artigo fornece uma visão geral de nível superior do estilo de arquitetura REST. O fato de o HTTP ser o principal componente dos serviços REST é enfatizado. HTTP é um protocolo usado para determinar a estrutura de solicitações e respostas do navegador. Vimos que o HTTP lida principalmente com os recursos disponíveis nos servidores da web. Os recursos são identificados usando um URI, e as operações nesses recursos são executadas usando verbos definidos pelo protocolo HTTP.
Finalmente, vimos como os serviços REST fazem o melhor uso dos recursos oferecidos pelo HTTP para fornecer recursos ao mundo externo. O REST não impõe nenhuma restrição aos formatos de apresentação dos recursos ou à definição de um serviço.
Leitura adicional
Fundamentos da arquitetura RESTfulDesenvolvendo APIs REST