Meilleures pratiques de l’API REST: args dans la chaîne de requête vs dans le corps de la requête

Une API REST peut avoir des arguments à plusieurs endroits:

  1. Dans le corps de la requête – En tant que partie d’un corps json ou d’un autre type MIME
  2. Dans la chaîne de requête – par exemple /api/resource?p1=v1&p2=v2
  3. Dans le cadre du chemin URL – par exemple /api/resource/v1/v2

Quelles sont les meilleures pratiques et considérations pour choisir entre 1 et 2 ci-dessus?
2 vs 3 est couvert ici .

Quelles sont les meilleures pratiques et considérations pour choisir entre 1 et 2 ci-dessus?

Généralement, le corps du contenu est utilisé pour les données à télécharger / télécharger sur le serveur et les parameters de la requête sont utilisés pour spécifier les données exactes demandées. Par exemple, lorsque vous téléchargez un fichier, vous spécifiez le nom, le type MIME, etc. En général, les parameters de requête sont la propriété de la requête et non les données.

Bien sûr, ce n’est pas une règle ssortingcte – vous pouvez l’implémenter de la manière qui vous convient le mieux.

Vous pouvez également consulter l’ article de wikipedia sur la chaîne de requête , en particulier les deux premiers paragraphes.

Je suppose que vous parlez de requêtes POST / PUT. Sémantiquement, le corps de la requête doit contenir les données que vous publiez ou corrigez.

La chaîne de requête, dans le cadre de l’URL (un URI), est là pour identifier la ressource que vous publiez ou corrigez.

Vous avez demandé une meilleure pratique, la sémantique suivante est la mienne. Bien sûr, l’utilisation de vos règles de base devrait fonctionner, surtout si la structure Web que vous utilisez résume cela en parameters .

Vous savez le plus:

  • Certains serveurs Web ont des limites sur la longueur de l’URI.
  • Vous pouvez envoyer des parameters dans le corps de la requête avec CURL.
  • Où vous envoyez les données ne devrait pas avoir d’effet sur le débogage.

Ce qui suit sont mes règles de base …

Quand utiliser le corps:

  • Lorsque les arguments n’ont pas de clé plate: structure de valeur
  • Si les valeurs ne sont pas lisibles par l’homme, telles que les données binarys sérialisées
  • Lorsque vous avez un très grand nombre d’arguments

Quand utiliser la chaîne de requête:

  • Lorsque les arguments sont tels que vous souhaitez les voir lors du débogage
  • Lorsque vous voulez pouvoir les appeler manuellement tout en développant le code, par exemple avec curl
  • Lorsque les arguments sont communs à de nombreux services Web
  • Lorsque vous envoyez déjà un autre type de contenu tel que application/octet-stream

Remarquez que vous pouvez combiner et mettre en correspondance les éléments courants, ceux qui doivent être débogables dans la chaîne de requête et jeter tout le rest dans json.