Tout simplement, vous le faites entièrement vers l'arrière.
Vous ne devriez pas être en train d'approcher à partir de ce que les Url que vous devriez utiliser. L'Url sera effectivement venir "gratuitement" une fois que vous avez décidé quelles sont les ressources nécessaires pour votre système ET comment vous allez représenter ces ressources, et les interactions entre les ressources et l'état de l'application.
Pour citer Roy Fielding
Une API REST devrait passer presque tous
son descriptif effort dans la définition de l'
le type de média(s) utilisée pour représenter les
les ressources et la conduite de l'application
l'état, ou dans la définition élargie
concernant les noms et/ou
hypertexte permis à mark-up pour les
standard de types de médias. Tout l'effort dépensé
décrire les méthodes à utiliser sur ce
Uri d'intérêt doivent être entièrement
définis dans le cadre de la
les règles de traitement pour un type de média
(et, dans la plupart des cas, déjà définis
par les types de médias). [Défaut
ici implique que out-of-band
l'information est le moteur de l'interaction
au lieu de l'hypertexte.]
Les gens commencent toujours avec les URIs et pense que c'est la solution, et puis ils ont tendance à manquer un concept clé dans le RESTE de l'architecture, notamment, cité ci-dessus, "l'Échec implique que out-of-band information est le moteur de l'interaction au lieu de l'hypertexte."
Pour être honnête, beaucoup de voir un tas d'Uri et certains Reçoit et Met en et des Postes et de penser RESTE est facile. Le REPOS n'est pas facile. RPC sur HTTP est facile, le déplacement de gouttes de données proxy via HTTP charges est facile. RESTE, cependant, va au-delà. Le REPOS est un protocole agnostique. HTTP est juste très populaire et apt pour le REPOS des systèmes.
RESTE vivant dans les types de médias, leurs définitions, et de la façon dont l'application des lecteurs les actions disponibles à ces ressources via hypertexte (liens, effectivement).
Il y a des point de vue différent sur les types de médias dans les autres systèmes. Certains faveur de l'application spécifique des charges utiles, tandis que d'autres comme édifiante existant types de médias dans des rôles qui sont adaptés à l'application. Par exemple, sur un côté, vous avez des schémas XML conçu adaptés à votre application ou utiliser quelque chose comme XHTML est votre représentation, peut-être à travers les microformats et d'autres mécanismes.
Les deux approches ont leur place, je pense, le XHTML qui fonctionne très bien dans les scénarios qui se chevauchent à la fois l'homme et de la machine entraînée web orienté, tandis que l'ancien, plus des types de données spécifiques, je me sens mieux faciliter la machine à la machine interactions. Je trouve le soutien des produits de base formats peuvent faire de la négociation de contenu potentiellement difficile. "application/xml+yourresource" est beaucoup plus spécifique comme un média de type "application/xhtml+xml", celles-ci peuvent s'appliquer à de nombreuses charges qui peuvent ou peuvent ne pas être quelque chose d'un client de machine est réellement intéressé, ni de déterminer sans l'introspection.
Cependant, XHTML fonctionne très bien (évidemment) l'homme dans le web, où les navigateurs web et le rendu est très important.
L'application vous guide dans ces types de décisions.
Une partie du processus de conception d'un RESTE du système est la découverte de la première classe de ressources dans votre système, ainsi que les dérivés, le soutien des ressources nécessaires pour soutenir les opérations sur les ressources primaires. Une fois que les ressources sont découvertes, la représentation de ces ressources, ainsi que l'état des diagrammes montrant les flux de ressources par hypertexte à l'intérieur de la représentation, car le prochain défi.
Rappelons que chaque représentation d'une ressource, dans un système hypertexte, combine à la fois la ressource réelle représentation avec les transitions d'état à la disposition de la ressource. Considérer chaque ressource d'un nœud dans un graphe, avec les liens les lignes de quitter ce nœud à d'autres états. Ces liens informer les clients non seulement ce qui peut être fait, mais ce qui est nécessaire pour eux d'être fait (comme un bon lien combine l'URI et le type de support requis).
Par exemple, vous pouvez avoir:
<link href="http://example.com/users" rel="users" type="application/xml+usercollection"/>
<link href="http://example.com/users?search" rel="search" type="application/xml+usersearchcriteria"/>
Votre documentation allons parler de la rel champ nommé "utilisateurs", et les médias de type "application/xml+youruser".
Ces liens peuvent sembler redondants, ils sont tous parler de la même URI, assez bien. Mais ils ne sont pas.
C'est parce que pour les "usagers" de la relation, le lien est en train de parler au sujet de la collecte des utilisateurs, et vous pouvez utiliser l'interface unique de travailler avec la collection (GET pour récupérer tous les de la, de les SUPPRIMER pour supprimer tous les d'eux, etc.)
Si vous postez un message à cette adresse, vous aurez besoin de passer d'une "application/xml+usercollection" du document, qui sera probablement contenir une seule instance d'utilisateur dans le document de sorte que vous pouvez ajouter à l'utilisateur, ou pas, peut-être, pour ajouter plusieurs à la fois. Peut-être que votre documentation suggèrent que vous pouvez tout simplement passer à un seul type d'utilisateur, au lieu de la collecte.
Vous pouvez voir ce que l'application a besoin pour effectuer une recherche, tel que défini par le lien "recherche" et c'est mediatype. La documentation pour la recherche type de support va vous dire comment il se comporte, et à quoi s'attendre comme résultats.
La vente à emporter ici, cependant, est l'Uri eux-mêmes sont fondamentalement pas d'importance. L'application est en contrôle de l'Uri, pas les clients. Au-delà de quelques "points d'entrée", vos clients doivent s'appuyer sur les Uri fourni par l'application à son travail.
Le client a besoin de savoir comment manipuler et interpréter les types de médias, mais n'a pas besoin de beaucoup de soins où il va.
Ces deux liens sont sémantiquement identiques dans une les clients les yeux:
<link href="http://example.com/users?search" rel="search" type="application/xml+usersearchcriteria"/>
<link href="http://example.com/AW163FH87SGV" rel="search" type="application/xml+usersearchcriteria"/>
Donc, se concentrer sur vos ressources. De se concentrer sur leurs transitions de l'état dans l'application et la façon dont c'est le mieux réalisé.