Je gère une ancienne page .aspx dans laquelle toutes les données requis par la page pour montrer que le contenu est transmis dans lURL de la requête GET en tant que partie de la chaîne de requête. Le résultat est que, à mesure que nous ajoutons des fonctionnalités, lURL ne cesse de sagrandir.

Je pense déplacer tous les paramètres de la chaîne de requête vers le corps de la requête GET.

Est-ce une bonne décision de conception et quel est le cas dutilisation dun corps dans la requête GET?

Commentaires

  • Pourquoi ne pas simplement utiliser une requête POST à la place?
  • Parce que je ne crée ni ne met à jour quoi que ce soit. Je suis juste en train de récupérer des informations sur le serveur.
  • Il ' sattend à ce que les requêtes GET soient idempotentes: demander la même URL plusieurs fois vous donne toujours un résultat équivalent. Cela par exemple permet la mise en cache (ce que certains navigateurs et proxys font de manière très agressive). Si vous déplacez les paramètres de requête dans le corps de la requête, vous ne respectez pas cette attente, veuillez donc éviter cela. Vous ' vous vous préparez à résoudre des problèmes difficiles à déboguer. Malheureusement, certains systèmes ont une limite de longueur dURL de lordre de quelques Ko. Si vous êtes toujours en train de concevoir votre API et que vous constatez que vous allez traiter des requêtes très complexes, une API GraphQL pourrait être un meilleur choix que REST.
  • En plus de ce que @amon a dit, mettre un corps dans un GET La requête est explicitement en violation de la spécification HTTP. Utilisez POST.
  • @Manya Les commentaires sur cette réponse Stack Overflow traitent un peu dElasticsearch. Notez quElasticsearch nest généralement pas consommé directement par les navigateurs mais uniquement par les applications internes, donc elles ont un peu plus de flexibilité – vous avez un contrôle total sur le client et le réseau.

Réponse

Les requêtes GET avec un corps sont prises en charge dans les spécifications HTML.

Voir la question de Stack Overflow Cette affirmation est-elle correcte? La méthode HTTP GET na toujours pas de corps de message pour une discussion.

Cependant, cest inhabituel. Vous surprendrez les gens avec cette solution. Passer simplement à un POST est une meilleure idée.

Le seul inconvénient (à la hausse?) est les acolytes RESTfulness ennuyeux.

Commentaires

  • il y a des inconvénients techniques puisque de nombreuses bibliothèques javascript ne ' t prend en charge GET avec un corps. Pour les bases de données dans lesquelles vous effectuez une recherche, il est logique de le faire de cette façon, mais vous ne ' t être capable de faire lappel depuis une application dune seule page vers votre instance ElasticSearch ou SOLR (les seules API où jai vu ce combo implémenté).
  • Cette question dit la même chose: stackoverflow.com/questions/978061/http-get-with-request-body " Oui. En dautres termes, toute requête HTTP message est autorisé à contenir un corps de message, et doit donc analyser les messages dans cet esprit. Serveur sem Les singeries pour GET, cependant, sont limitées de telle sorte quun corps, le cas échéant, na aucune signification sémantique pour la demande. Les exigences sur lanalyse syntaxique sont distinctes des exigences sur la sémantique des méthodes. Donc, oui, vous pouvez envoyer un corps avec GET, et non, ce nest jamais utile de le faire. " La réponse réelle contient plus de détails.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *