Introdução à API REST - Serviços da Web RESTful

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 RESTful
Desenvolvendo APIs REST

Source: https://habr.com/ru/post/pt483202/


All Articles