Les URL de l'API REST doivent-elles ressembler à ceci?
Est-il vrai que pour mettre en œuvre une API RESTful, on doit mettre en œuvre une structure d'URL qui ressemble à ce
http://example.com/post/
http://example.com/post/123
où la /123
serait utilisé pour modifier, supprimer
Une autre façon de poser la question est: est-ce une URL qui ressemble à ce qui sera appelé le Réparateur?
http://example.com/script.php?method=get_title&blogid=123
source d'informationauteur Gorge | 2010-10-30
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas ont pour la conception de votre structure de l'URI comme ça. Il pourrait également être
/some_obscure_string/base64_encoded_title/unique_id
. Cela pourrait aussi être paisible, en fonction de plusieurs autres facteurs.Mais il y a plusieurs pratiques exemplaires sur la façon de concevoir les Uri dans un cadre Reposant application web et d'être aussi simple et lisible que possible, est l'un d'entre eux.
Votre exemple
http://example.com/script.php?method=get_title&blogid=123
pourrait également être paisible, mais les paramètres de la requête indiquer que certains types de RPC ou RMI-over-HTTP est utilisé à la place.Pour résumer: Ne pas mettre trop de pensée dans votre URI de la conception. Cela ne se fera automatiquement avec un bon et bon Réparateur de la conception de votre application.
L'Idée derrière le REPOS, c'est que chaque ressource dispose de sa propre URL et que vous utilisez les différentes méthodes HTTP interagir avec ces ressources. Il est logique de définir la structure d'URL, de sorte que la hiérarchie entre les différentes ressources se reflète dans l'URL, mais vous n'avez pas à.
Si vous avez des Url comme ceci
vous pourrait encore fournir une API RESTful. L'Idée est qu'un
GET
à/all-posts/
retourne une liste des Url de tous les postes de l'objet et le client utilise les URLs à interagir avec les ressources. Fondamentalement, les Url doivent être traitées comme des données opaques par le client.Tant que l'URL qui est intégré dans le client ne changera pas vous pouvez aussi changer la structure sans avoir à modifier le client.
Votre exemple d'URL qui ne doit pas appartenir à une API RESTful, car elle contient une méthode
get_title
. Dans le RESTE de l'URL représente un chose. Ce qui est à faire avec la chose (cela devrait-il être modifié, devrait-il être contenu récupéré, ...) ne fait pas partie de l'URL, pour que le REPOS utilise les différentes méthodes HTTP.Un aspect clé de REPOS, c'est que l'url de la ressource. un uri comme
ne met pas l'identificateur de ressource dans la partie des ressources de l'uri. ce n'est pas de dire qu'une API RESTful ne devriez jamais utiliser les paramètres get; en fait, c'est très bien:
pourrait être un excellent moyen pour obtenir l'URI de la 3ème page des plus anciens posts. Cependant, à l'aide des paramètres de cette façon devrait être utilisé seulement dans les cas où la demande de la méthode est également
GET
.PUT
et surtoutPOST
méthodes devraient vraiment utiliser simple d'uri avec les ressources qui seront affectées que dans la partie du chemin d'accès.Reposant URI design est d'accès aux ressources et elles doivent être structurées dans le repos manière, de sorte que vous ne devriez pas avoir toutes les chaînes de requête.
par exemple, d'OBTENIR
auteurs/
auteurs/1
auteurs/1/livres
auteurs/1/livres/10
auteurs/1/livres/10/résumé
etc.
Quoi que ce soit et tout ce qui est appelé de Détente ces jours-ci, il suffit de regarder certaines des réponses par son inventeur, le Dr Roy Fielding et vous aurez quelques idées. Il vaut la peine de faire un peu de lecture sur le sujet.
P. S vous n'avez pas besoin de post,get, etc dans votre Uri, le protocole HTTP est actuellement surtout utilisé pour la consommation des Api REST et vous pouvez passer verbe comme une partie de l'appel. Il y a aussi une notion de la négociation de contenu est je.e vous pouvez demander à n'importe quel format disponible à partir de l'API REST (json,xml atc).
Le RESTE concept est vraiment basé sur le fait que c'est l'URL et non pas poussée par les données-gouttes. Avec le RESTE, vous n'avez pas à passer un géant de la requête soap pour appeler une méthode de votre appel de méthode/création de l'objet/tout ce que vous voulez faire est invoquée simplement par l'URL, et le verbe que vous avez utilisé vs cette URL.
Un Exemple D'Url:
La structure de vos Url n'a pas d'importance. Ce qui importe, c'est que chaque URL identifie exactement 1 ressource. Chaque ressource peut avoir plusieurs URLs qui pointent vers elle, mais chaque URL ne doit point 1 de la ressource.