Apidog

All-in-one Collaborative API Development Platform

Design de API

Documentação de API

Depuração de API

Mock de API

Testes Automatizados de API

Inscreva-se gratuitamente
Home / Ponto de vista / Um Guia Definitivo sobre HTTP GET com Corpo da Requisição

Um Guia Definitivo sobre HTTP GET com Corpo da Requisição

No HTTP, você pode se perguntar por que o GET não usa um corpo de solicitação, ao contrário de outros métodos. Este guia explica o porquê e como usar solicitações GET.

Quando se trata de HTTP (Protocolo de Transferência de Hipertexto), você pode estar se perguntando por que o método GET geralmente não usa um corpo de requisição. Afinal, no mundo das requisições web, é comum enviar dados no corpo da requisição para transmitir informações ao servidor. No entanto, o método GET, apesar de ser um dos métodos HTTP mais fundamentais, opera de maneira um pouco diferente.

Neste guia, vamos explicar por que as requisições HTTP GET geralmente não incluem um corpo de requisição, explorar o propósito do método GET e discutir como enviar uma requisição GET.

O que é um Corpo de Requisição em HTTP?

Em HTTP, o corpo da requisição é parte da mensagem de requisição que transporta dados do cliente para o servidor. É crucial para métodos como POST, PUT e PATCH, usados para criar, atualizar ou modificar recursos. Por exemplo, em uma requisição POST para criar uma conta de usuário, os detalhes do usuário estão no corpo da requisição. Em contraste, métodos como GET ou DELETE geralmente não usam um corpo de requisição, concentrando-se em URLs e cabeçalhos para a recuperação ou exclusão de recursos.

A Requisição GET tem um corpo em HTTP?

Sim, tecnicamente, é possível incluir um corpo de requisição em uma requisição HTTP GET. De acordo com a especificação HTTP/1.1, qualquer mensagem de requisição HTTP é permitida ter um corpo de mensagem, e os servidores devem analisar mensagens tendo isso em mente. No entanto, é essencial entender que a semântica do servidor para o método GET é restringida de tal forma que um corpo, se incluído, não tem significado semântico para a requisição.

Em termos mais simples, embora não seja explicitamente proibido incluir um corpo de requisição em uma requisição GET, nunca é útil fazer isso. O propósito do método GET é recuperar informações identificadas pelo Request-URI, e alterar a requisição adicionando um corpo pode levar a complicações e não está alinhado com as convenções padrão do HTTP.

Especificação HTTP/1.1

A especificação HTTP/1.1 (RFC 7230) permite a inclusão de um corpo de requisição em requisições GET, embora geralmente não seja recomendado. Embora tecnicamente viável, anexar um corpo a uma requisição GET vai contra o princípio de usar GET para recuperar dados de forma segura sem modificar os recursos do servidor.

Por que a Requisição HTTP GET não usa um Corpo?

Por que o método GET não usa o corpo HTTP? A seguir, iremos apresentar as principais razões pelas quais o método GET não utiliza o corpo da requisição.

Limitações da Especificação HTTP

  • A especificação HTTP estabelece que requisições do método GET devem ser seguras para reenvios.
  • Ter um corpo de requisição pode causar efeitos colaterais indesejados ao retransmitir

Idempotência Garantida

  • O método GET deve garantir idempotência de que "o resultado não mudará mesmo se a mesma requisição GET for repetida"
  • O corpo da requisição pode quebrar a idempotência

Implementação do Cache

  • Os resultados do GET são frequentemente armazenados em cache e reutilizados
  • O cache não funciona se houver um corpo de requisição

Facilidade de Favoritar e Compartilhar

  • É desejável poder reproduzir os resultados utilizando apenas a URL da requisição GET.
  • Se houver um corpo de requisição, será difícil reproduzir usando apenas a URL.

Segurança

  • Requisições GET podem ser registradas em logs, etc.
  • Se informações pessoais estiverem incluídas no corpo da requisição, isso representa um risco de segurança.

Por essas razões, o método GET basicamente não utiliza o corpo da requisição.

Exceção: Quando Usar o Corpo HTTP mesmo no Método GET

No entanto, isso não significa que você não possa sempre usar o corpo HTTP com o método GET. Nos seguintes casos, o corpo da requisição também pode ser enviado usando o método GET.

Embora o método HTTP GET seja tradicionalmente não associado ao uso de corpos de requisição, existem exceções. Por exemplo, ao especificar critérios de pesquisa, como palavras-chave de pesquisa, você pode incorporá-las ao corpo da requisição e usar o método GET para transmissão.

Em casos onde o número de parâmetros de consulta é limitado, como em APIs REST, o corpo da requisição pode servir como uma alternativa para enviar dados. Além disso, o smuggling de requisições pode envolver o envio de corpos de requisição falsos para interromper a análise de tráfego. Na prática, embora o método GET geralmente exclua corpos de requisição, existem instâncias específicas onde essa regra pode ser desviada. Na maioria dos cenários envolvendo transmissão de dados via corpo HTTP, métodos como POST e PUT são comumente empregados.

Apidog: Totalmente Compatível com Todas as Requisições HTTP(GET, POST, PUT, DELETE)

Então, o que devo fazer se eu quiser enviar dados em um corpo HTTP usando métodos como GET ou POST? Uma excelente ferramenta de gerenciamento de API chamada Apidog tem total suporte para todos os métodos HTTP, então você pode especificar um dos métodos HTTP ao enviar uma requisição HTTP, e escolher se deseja usar ou não o corpo HTTP. pode.

Além disso, se você desenvolver uma API você mesmo, pode não apenas projetar a API, mas também executar várias funções como geração de especificações de API, automação de testes, simulação de dados, etc.

Apidog

Apidog também suporta vários métodos HTTP, incluindo GET e POST. Ambas as APIs Web usam o protocolo HTTP, então você precisa escolher o método HTTP dependendo do seu propósito. Falando sobre métodos HTTP, sempre existem os seguintes:

  • GET (obter conteúdo)
  • POST (adicionar novo conteúdo)
  • PUT (alterar conteúdo existente)
  • DELETE (excluir conteúdo)

Você pode selecionar o método desejado na lista suspensa de métodos HTTP, ou se quiser usar o corpo HTTP, pode facilmente alternar para a aba "Body" do parâmetro da requisição.

Clique no botão "Enviar", você receberá rapidamente a resposta GET.

botão

Junte-se à Newsletter da Apidog

Inscreva-se para ficar atualizado e receber os últimos pontos de vista a qualquer momento.