Estou mantendo uma página .aspx antiga na qual todos os dados exigido pela página para mostrar que o conteúdo é passado na URL da solicitação GET como parte da string de consulta. O resultado disso é que, à medida que adicionamos recursos, a URL fica cada vez maior.

Estou pensando em mudar todos os parâmetros da string de consulta para o corpo da solicitação GET.

É uma boa decisão de design e qual é o caso de uso de um corpo na solicitação GET?

Comentários

  • Por que não usar simplesmente uma solicitação POST em vez disso?
  • Porque não estou criando ou atualizando nada. Estou apenas recuperando informações do servidor.
  • É ' esperado que as solicitações GET sejam idempotentes: solicitar a mesma URL várias vezes sempre obtém um resultado equivalente. Este, por exemplo permite o armazenamento em cache (o que alguns navegadores e proxies fazem de forma muito agressiva). Se você mover os parâmetros de consulta para o corpo da solicitação, estará violando essa expectativa, portanto, evite isso. Você ' está se preparando para problemas difíceis de depurar. Infelizmente, alguns sistemas têm um limite de comprimento de URL da ordem de alguns KB. Se você ainda estiver projetando sua API e descobrir que lidará com consultas muito complexas, uma API GraphQL pode ser mais adequada do que REST.
  • Além do que @amon disse, colocar um corpo em um GET a solicitação viola explicitamente a especificação HTTP. Use POST.
  • @Manya Os comentários sobre esta resposta do Stack Overflow discutem Elasticsearch um pouco. Observe que o Elasticsearch normalmente não é consumido diretamente por navegadores, mas apenas por aplicativos internos, então eles têm um pouco mais de flexibilidade – você tem controle total sobre o cliente e a rede.

Resposta

Solicitações GET com um corpo são suportadas nas especificações HTML.

Veja a pergunta Stack Overflow Esta afirmação está correta? O método HTTP GET sempre não tem corpo de mensagem para uma discussão.

No entanto, é incomum. Você vai surpreender as pessoas com essa solução. Simplesmente mudar para um POST é uma ideia melhor.

A única desvantagem (lado positivo?) são os acólitos RESTfulness irritantes.

Comentários

  • existem desvantagens técnicas, já que muitas bibliotecas javascript não ' não suporta GET com um corpo. Para bancos de dados em que você está realizando uma pesquisa, faz sentido fazer isso dessa forma, mas você não ' t ser capaz de fazer a chamada de um aplicativo de página única para sua instância ElasticSearch ou SOLR (as únicas APIs onde vi essa combinação implementada).
  • Esta pergunta diz a mesma coisa: stackoverflow.com/questions/978061/http-get-with-request-body " Sim. Em outras palavras, qualquer solicitação HTTP a mensagem pode conter um corpo de mensagem e, portanto, deve analisar as mensagens com isso em mente. as artimanhas para GET, entretanto, são restritas de forma que um corpo, se houver, não tenha significado semântico para a solicitação. Os requisitos de análise são separados dos requisitos de semântica do método. Então, sim, você pode enviar um corpo com GET, e não, nunca é útil fazer isso. " A resposta real tem mais detalhes.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *