Entendedo o Verbos HTTP Menos Utilizados

Postador por : at

Categoria : rest_api


Ola caro leitor, no artigo anterior Entendendo os Principais Verbos HTTP, falamos sobre os quatros verbos mais utilizado, neste tópico iremos falar sobre os outros cinco verbos existentes no HTTP, são eles PATCH, OPTIONS, HEAD, CONNECT e TRACE.

Estes métodos são usados com menor frequência, mas não são menos importantes, pelo contrario, se bem utilizados eles podem nos fornecer vantagem em nossas aplicações.

O método HEAD é muito parecido com o método GET, a única diferença é que o servidor não retornará o “body” depois de receber a requisição.

O HTTP HEAD pode ser usado por exemplo para pré-autenticação no servidor da web, antes de você fazer HTTP PUT / POST de alguns dados grandes. Sem a primeira solicitação HEAD, você estaria enviando os dados grandes para o servidor da web duas vezes (porque a primeira solicitação retornaria uma resposta não autorizada 401 com o cabeçalho WWW-authenticate).

O método HEAD é idêntico ao GET, exceto que o servidor NÃO DEVE retornar um corpo de mensagem na resposta. A metainformação contida nos cabeçalhos HTTP em resposta a uma solicitação HEAD DEVE ser idêntica à informação enviada em resposta a uma solicitação GET. Este método pode ser usado para obter metainformações sobre a entidade implícita na solicitação sem transferir o próprio corpo da entidade. Este método é freqüentemente usado para testar links de hipertexto quanto à validade, acessibilidade e modificações recentes.

curl -I -v http://www.example.com/users

Para utilizarmos o verbo HEAD com curl basta adicionar a opção -I e assim pegaremos somente o header da requisição.

PATCH

O método PATCH faz “modificações parciais nos recursos”, ou seja, fazer a alteração de valores específicos de um recurso, ao invés de enviar todos os dados novamente. Enquanto o método PUT só permite a “substituição” inteira do recurso, o PATCH permite modificações parciais.

Diferença entre PUT e PATCH

PUT: Se o cliente enviar dados com um identificador, verificaremos se esse identificador existe. Se o identificador existir, iremos atualizar os dados, caso contrário, iremos criá-lo e atribuir um novo identificador.

PATCH: Se o cliente enviar dados com um identificador, verificaremos se esse identificador existe. Se o identificador existir, atualizaremos os dados, caso contrário, lançaremos uma exceção.

No método Put , não estamos lançando uma exceção caso o identificador não for encontrado. Mas no método Patch , já estamos lançando uma exceção se o identificador não for encontrado.

curl -X PATCH -v http://www.example.com/users/1 \
-H "Content-Type: application/json" \
-d '{"age":26}'

A utilização do método PATCH é idêntica a método PUT com a diferença que devemos informar somente o campo que queremos atualizar no corpo do recurso.

OPTIONS

O método OPTIONS é a forma que o cliente possui de perguntar ao servidor quais os requisitos para um determinado recurso.

Por exemplo, o OPTIONS pode ser usado para saber quais métodos podem ser aplicados a um determinado recurso, ou qual a URL permitida para se comunicar com um determinado recurso.

A resposta virá no header da requisição em um atributo Access-Control-Allow-Methods ou Allow onde será exibido quais Verbos tem disponível para o recurso que você solicitou.

curl -i -X OPTIONS
http://www.example.com/users/1

A chamada com o curl é bem simples, basta colocar as propriedades -i e -X OPTIONS seguindo da url do serviço.

TRACE

Ecoa de volta a requisição recebida para que o cliente veja se houveram mudanças e adições feitas por servidores intermediários. Então o TRACE vai até o servidor e volta, mostrando o que aconteceu durante todo o percurso da chamada. O risco de utilizar o TRACE é permitir que um invasor roube informações, incluindo cookies e, possivelmente, credenciais do site.

Porem esse verbo TRACE precisa estar habilitado para receber pelo servidor por que ele pode ser usado para testar vulnerabilidade da requisição com cibercriminosos, então a maioria dos servidores trazem ele desabilitado.

curl -X TRACE
http://www.example.com/users/1

Para utilizarmos o TRACE basta colocar a propriedade -X TRACE e o recurso a ser chamado, possivelmente ele ira retornar um status code 405, que significa não autorizado.

CONNECT

Converte a requisição de conexão para um túnel TCP/IP transparente, usualmente para facilitar comunicação criptografada com SSL (HTTPS) através de um proxy HTTP não criptografado.

Para utilizar o CONNECT é preciso que o servidor esteja preparado para receber uma chamada deste tipo.

curl -X CONNECT
http://www.example.com:443

O exemplo acima abre uma conexão do seu proxy para www.example.com na porta 443. Depois disso, o conteúdo que é enviado pelo cliente é encaminhado pelo proxy para www.example.com:443.

Se um usuário tentar recuperar uma página http://www.example.com , o proxy pode enviar exatamente a mesma solicitação e recuperar uma resposta para ele, em seu nome.

Com SSL (HTTPS), apenas os dois terminais remotos entendem as solicitações, e o proxy não pode decifrá-las. Portanto, tudo o que ele faz é abrir esse túnel usando CONNECT e deixar os dois pontos finais (servidor da web e cliente) se comunicarem diretamente.

Então chegamos ao fim desta sessão, acima foi uma breve explicação dos métodos menos utilizado nas construções de API RESTful. Espero que tenham gostado, e qualquer duvida não exite em deixar nos comentários.

Veja também : Entendendo os Principais Verbos HTTP.


Fontes: Developers Mozilla, Jackson Pires, Stack Overflow