Arquitetura REST: Métodos de requisições HTTP para manipulação dos recursos

Vamos revisar sobre métodos de requisições HTTP e como utilizá-los para manipular recursos dentro da Arquitetura REST.

Avatar


22 de Fevereiro de 2023

Fala, meus consagrados! Beleza?

Vamos revisar sobre métodos de requisições HTTP e como utilizá-los para manipular recursos dentro da Arquitetura REST.

Teoria

Quando um cliente dispara uma requisição HTTP para um serviço, são informados:

  • A URI que identifica quais recursos ele pretende manipular; e
  • O tipo de manipulação que deseja realizar no recurso.

Sobre a URI, estudamos na seção anterior. Agora é entendermos o tipo de manipulação que se realiza no recurso. Para essa manipulação de recursos, utilizamos os métodos do protocolo HTTP (GET, POST, PUT, DELETE, etc) (figura 1).

Esses métodos são definidos pelo protocolo HTTP para indicarem a ação a ser executada para um dado recurso. Cada um desses métodos possui uma semântica distinta e deve ser utilizado para indicar o tipo de manipulação a ser realizada em um determinado recurso.

Figura 1: Métodos do protocolo HTTP.

GET:

  • Obtém os dados de um recurso;
  • Requisita a representação de um recurso específico; e
  • Requisições utilizando esse método devem retornar apenas dados.

HEAD:

  • É similar ao GET, mas utilizado apenas para se obter os cabeçalhos de resposta, sem os dados em si; e
  • Requisita uma resposta de forma idêntica ao método GET, porém sem conter o corpo da resposta.

POST:

  • Criar um novo recurso;
  • É utilizado para submeter uma entidade a um recurso específico;
    • Frequentemente causando uma mudança no estado do recurso ou efeitos colaterais no servidor.

PUT:

  • Cria um novo recurso, igual ao método post; e
    • Mas substitui uma representação do recurso de destino com os novos dados se o recurso já existe;
  • Tanto POST quanto PUT podem ser usados para criação de um recurso, mas o PUT é mais usado para alteração de dados de um recurso.

DELETE:

  • Remove um recurso específico.

CONNECT:

  • Estabelece um túnel para o servidor identificado pelo recurso de destino; e
  • Pode ser utilizado para acessar websites que usam SSL (HTTPS).

OPTIONS:

  • É usado para descrever as opções de comunicação com o recurso de destino;
  • Obtém quais manipulações podem ser realizadas em um determinado recurso.

 

TRACE:

  • Executa um teste de chamada loop-back junto com o caminho para o recurso de destino; e
  • Ecoa a requisição recebida.

PATCH:

  • É utilizado para aplicar modificações parciais em um recurso.

Figura 2: Tipos de métodos do protocolo HTTP.

São três tipos de métodos (figura 2):

  • Seguro;
  • Idempotente; e
  • Cacheável.

Um método seguro não altera o estado do servidor, ou seja, leva a uma operação de somente leitura. São métodos seguros:

  • GET;
  • HEAD; e
  • OPTIONS.

Um método idempotente é um método em que uma requisição idêntica pode ser feita uma ou mais vezes, em sequência, com o mesmo efeito, enquanto deixa o servidor no mesmo estado. Ou seja, não deveria possuir nenhum efeito colateral, exceto para manter estatísticas.

São métodos idempotentes:

  • GET;
  • HEAD;
  • OPTIONS;
  • PUT;
  • DELETE; e
  • TRACE.

Todos os métodos seguros são idempotentes, mas nem todos os métodos idempotentes são seguros. Exemplo de métodos idempotentes, entretanto são inseguros: PUT, DELETE e TRACE.

Sobre métodos cacheáveis, uma resposta cacheável é uma resposta HTTP que pode ser armazenada em cache, para ser recuperada e usada posteriormente, salvando uma nova solicitação no servidor.

São métodos cacheáveis:

  • GET;
  • HEAD; e
  • POST;
    • Somente se houver informações atualizadas.

Para envio de dados via formulários HTML, podemos usar os métodos POST e GET. Método POST envia os dados como parte do corpo da requisição HTTP. Ao enviar um formulário através do método POST os dados serão anexados ao corpo da requisição HTTP, portanto, os dados não são mostrados na URL. Esse método é usado para enviar dados confidenciais e não tem limitações de tamanho. Já o método GET é o método padrão do formulário HTML, caso não seja declarado o atributo method do elemento <form>. Esse método não é usado para enviar dados confidenciais, pois esses dados ficarão visíveis na URL. GET envia os parâmetros da requisição HTTP codificados na URL e o tamanho de uma URL é limitado a cerca de 3000 caracteres.

Por último, vamos analisar as diferenças entre os métodos POST e PUT. Na figura 3, temos as primeiras diferenças. Além disso, temos:

  • POST não é idempotente:
    • Chamar requisições com método POST idênticos sucessivos podem ter efeitos adicionais, como passar uma requisição várias vezes; e
  • PUT é idempotente:
    • Chamar requisições com método PUT uma ou várias vezes sucessivamente tem o mesmo efeito.

Questões de concursos

 

[NC/UFPR 2019 Prefeitura de Matinhos/PR – Técnico em Informática – Adaptada] De acordo com o protocolo HTTP em sua versão 1.1, definida pela RFC2616, é correto afirmar: (Marque CERTO ou ERRADO)

[A] Os tipos de mensagens descritas na especificação são GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS e CONNECT.

Comentários:

O texto da letra traz métodos de requisição HTTP e não tipos de mensagens.

Gabarito: ERRADO.

[Instituto AOCP 2019 Prefeitura de São Bento do Sul/SC – Técnico em Informática] HTTP é um protocolo sem estado em nível de aplicação. Cada comando é executado independentemente, sem qualquer conhecimento dos comandos que vieram antes dele.

Assim, sobre HTTP, é correto afirmar que o comando que solicita escrita em uma página é o

[A] LINK

[B] UNLINK

[C] PUT

[D] DELETE

Comentários:

Das letras da questão, temos apenas dois métodos HTTP: PUT e DELETE.

O método PUT cria um novo recurso e pode substituir uma representação do recurso de destino com os novos dados. Já o DELETE remove um recurso específico.

Com isso, a letra c é o nosso gabarito.

Gabarito: Letra C.

[CESPE 2019 MPC/PA – Assistente Ministerial de Informática] Uma mensagem de requisição no protocolo HTTP deve incluir a operação (ou método) que se deseja que o servidor execute.

Na situação em que um cliente requisita ao servidor o armazenamento de um relatório direcionado especificamente para um grupo de trabalho, deve-se utilizar a operação

[A] get.

[B] get com rótulos tag.

[C] post.

[D] put continue.

[E] trace.

Comentários:

Dos métodos citados, temos:

  • GET:
    • Obtém os dados de um recurso;
    • Requisita a representação de um recurso específico; e
    • Requisições utilizando esse método devem retornar apenas dados;
  • POST:
    • Criar um novo recurso; e
    • É utilizado para submeter uma entidade a um recurso específico, frequentemente causando uma mudança no estado do recurso ou efeitos colaterais no servidor;
  • PUT:
    • Cria um novo recurso, igual ao método post, mas substitui uma representação do recurso de destino com os novos dados se o recurso já existe; e
  • TRACE:
    • Executa um teste de chamada loop-back junto com o caminho para o recurso de destino; e
    • Ecoa a requisição recebida.

Na situação descrita na questão, se um cliente requisita ao servidor o armazenamento de um relatório direcionado especificamente para um grupo de trabalho, então, para a criação de um novo recurso, usamos o método POST.

Gabarito: Letra C.

 

Espero que tenham gostado!

Forte abraço e até a próxima jornada!

_________________________

Professor Rogerão Araújo


Quer ficar por dentro dos concursos públicos abertos e previstos pelo Brasil?
Clique nos links abaixo:

CONCURSOS ABERTOS

CONCURSOS 2023

Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
Clique no link abaixo e inscreva-se gratuitamente:

TELEGRAM

Avatar


22 de Fevereiro de 2023