12
votes

Restez la meilleure pratique pour obtenir une liste de sous-ensemble

J'ai lu l'article à Applications complexes et répond à certaines de mes questions, mais pas Tous.

Je concevons ma première application de repos et je dois retourner des listes "sous-ensemble" pour obtenir des demandes. Lequel des éléments suivants est plus "reposant"? P> xxx pré>

ou p> xxx pré>

ou même p>

/patients;rounds=true;specific_id=xxxx;covering_id=yyyy;primary_id=zzzz


1 commentaires

Je pense que tous pourraient être restreints, mais l'URL n'est qu'une partie d'être restreinte. Mon choix irait avec / nominations / patients / user_id = 1234 / date = 2010-02-22, ce qui vous permettrait de quitter la date de congé et d'obtenir tous les rendez-vous des patients pour cet ID utilisateur.


3 Réponses :


5
votes

ralph,

Les modèles URI particuliers sont orthogonaux à la question à quel point votre application sera reposante.

Ce qui compte en ce qui concerne la repose-repos, c'est que le client découvre comment construire les URIS à l'exécution . Cela peut être atteint avec des formulaires ou des modèles URI. Les deux contrôles HyperMedia indiquent au client quels paramètres peuvent être utilisés et où les mettre dans l'URI.

Pour que cela fonctionne de manière robuste, le client et le serveur doivent connaître les paramètres possibles au moment de la conception. Ceci est généralement obtenu en faisant partie de la spécification de la relation de liaison.

Vous pourriez par exemple définir une relation de liaison «My-Subset» pour avoir la signification de la liaison aux sous-ensembles des collections et que vous définissez les paramètres suivants:

ListType, date, userid.

dans un modèle de liaison que la spécification pourrait être utilisée comme

Notez comment le nom du paramètre réel dans l'URI est découplé du nom de paramètre spécifié. La valeur d'Userid est en retard sur le paramètre URI utilisateur_id.

Ceci permet au nom du paramètre URI de modifier sans affecter le client.

Vous pouvez consulter les documents de description d'opensech ( http://www.opensearcher.org ) pour voir comment cela est fait dans la pratique.

En réalité, vous devriez être capable d'exploiter un peu OpenSearch un peu pour votre cas d'utilisation. Surtout la capacité de prédéfinir les requêtes vous permettrait de décrire des sous-ensembles particuliers dans vos «formes».

Mais voir par vous-même, puis demander à nouveau: -)

janvier


7 commentaires

Je me fraye un chemin à travers les documents Opensearch. Vous suggérez-vous que chaque ressource sur un serveur de repos doit être «découvertable» en appelant une autre URL sur le serveur? Je ne peux pas simplement publier un document qui dit quelque chose comme "si vous avez besoin d'obtenir tous les widgets bleus, utilisez l'URL '/ widgets; couleur = bleu'?


Oui, comme dit Darrel. En un sens, vous pouvez en penser de cette façon: fournir le document que vous avez à l'esprit dans la forme lisible par machine (type de support) au moment de l'exécution et laisser le client réagir dessus. Jan


Pouvez-vous fournir une citation ou une défense pour cette réclamation: «Les modèles d'URI particuliers sont orthogonaux à la question à quel point votre application sera reposante»?


Je tiens à repousser contre cette déclaration: "Les modèles d'URI particuliers sont orthogonaux à la question de savoir à quel point votre candidature sera reposante." Selon p. 233 de services Web reposants de Richardson et de Ruby, il existe des moyens meilleurs et pires de construire des modèles URI pour correspondre à leur "architecture orientée vers les ressources" (ROA). En résumé: (1) Les URI représentent des ressources (par exemple, des noms), (2) rendre les URI constructibles par les clients (3) utilisent des barres obliques à passer du général à spécifiques, (4) utilisez des virgules lorsque la commande compte, (5) Les points-virgules quand ce n'est pas et (6) utilise des variables de requête pour des algorithmes.


FWIW, je conviens que la découverte des ressources comporte de compte. Je suis content que Jay, Jay l'a amené parce qu'il est parfois négligé. Cependant, il ne fait que partie de la construction d'une bonne API reposante - Building Bonne URIS est également essentiel.


URI Conception influe sur la facilité de mise en œuvre, mais ils n'influencent pas si une application est reposante ou non. Il n'y a pas de contrainte dans le repos qui s'applique à la façon dont vous structurez vos URI.


Bonjour Jan, je n'ai que revisiter cette page. Basé sur mon expérience avec les communautés Ruby / Rails, obtenir le droit URI est une grosse affaire lorsqu'il s'agit de concevoir une API reposante. Je conviens qu'il n'y a pas de contrainte technique qui dicte comment vous structurez vos URI; Cependant, il y a beaucoup plus au monde que les contraintes techniques. Dans ce cas, il y a de meilleures pratiques et normes communautaires.



2
votes

Je vous recommanderais d'utiliser cette structure URL:

/users/1234/appointments;date=2010-02-22


1 commentaires

Je pense / rendez-vous / user_id = 1234; date = 2010-02-22 est légèrement meilleure comme / rendez-vous / définit un point de la hiérarchie.



-1
votes

Je peux se rapporter à ce que David James a répondu.
Le format de vos URI peut être comme s'il vous suggère:

/ rendez-vous; user_id = 1234; date = 2010-02-22

et / ou

/ utilisateurs / 1234 / rendez-vous; date = 2010-02-22

Tout en conservant la découverte (au moment de l'exécution) des URI de votre ressource (comme Jan Algermissen suggérées).


0 commentaires