Une API REST peut avoir des arguments à plusieurs endroits:
- Dans le corps de la requête - Dans le cadre d'un corps json ou d'un autre type MIME
- Dans la chaîne de requête - par exemple
/api/resource?p1=v1&p2=v2
- 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 .
Réponses:
Habituellement, le corps du contenu est utilisé pour les données à charger / télécharger vers / depuis le serveur et les paramètres de 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. dans le corps, mais lorsque vous récupérez la liste de fichiers, vous pouvez utiliser les paramètres de requête pour filtrer la liste par une propriété des fichiers. En général, les paramètres de la 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 stricte - vous pouvez la mettre en œuvre de la manière qui vous convient le mieux / qui fonctionne pour vous.
Vous pouvez également consulter l' article de wikipedia sur la chaîne de requête , en particulier les deux premiers paragraphes.
la source
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 empiriques devrait fonctionner, en particulier si le framework Web que vous utilisez résume cela en paramètres .
Vous le savez le plus:
la source
Voici mes règles de base ...
Quand utiliser le corps:
Quand utiliser la chaîne de requête:
curl
application/octet-stream
Notez que vous pouvez mélanger et assortir - mettez les plus communs, ceux qui devraient être déboguables dans la chaîne de requête, et jetez tout le reste dans le json.
la source