8
votes

Restez la question de l'API sur la manière de gérer les collections aussi efficaces que possible tout en se conformant aux principes de repos

Je suis assez nouveau pour me reposer mais aussi loin que moi, je comprends que l'URL suivante est conforme aux principes de repos. Lorsque les ressources sont définies comme suit: XXX

Cependant, comment optimiser cet exemple API? Dites par exemple, j'ai 10k livres dans ma bibliothèque et je veux chercher les détails de chaque livre de ma bibliothèque. Devrais-je vraiment forcer un appel http à / bibliothèque / book / pour chaque identifiant donné dans / bibliothèque / book ? Ou devrais-je activer plusieurs identifiants comme paramètres? / bibliothèque / book / , ... et faites comme la vrac récupération avec un 100 identifiant à la fois?

Que dit les principes de repos à propos de ce genre de situation? Et quels sont vos opinions?

Merci encore.


2 commentaires

Le reste n'a aucune opinion sur ce que vos URL ressemblent. Cependant, ce document a un tas de suggestions Outils.ief.org/html/draft- GREGORIO-URITEMPLET-04


Consultez ceci pour comprendre certaines des bonnes pratiques de conception de Saipraveenblog.wordpress.com/2014/09/29/REST-API-BEST-PRACTI-CES


4 Réponses :


5
votes

Ceci est strictement une matière de design.

Je pourrais définir une ressource et l'utiliser comme ceci: xxx

Comment Spécifiez également la liste L'argument est vraiment une question de quel type d'utilisation vous envisagez de cette ressource. Vous auriez pu, par exemple: xxx

ou vous pouvez simplement utiliser tous les livres: xxx

mais dans mon L'esprit, en particulier la forme avec une longue liste d'identifiants "aléatoires", semble assez inapte. Peut-être que je définirais plutôt un paramètre filtre afin que je puisse spécifier: xxx

sur votre question sur la limite de longueur d'URL HTTP, la norme ne se définit pas tout. Mais le navigateur peut varier ... Regardez ce S.o. Sujet

Pour être plus strictement reposant, le paramètre de requête pourrait être spécifié via des en-têtes HTTP, mais l'idée générale que je voulais transmettre ne change pas.

J'espère que cela vous semble approprié ...


4 commentaires

Vérifiez aussi ce s.o. Sujet: Stackoverflow. com / questions / 306271 / ...


Comment allez-vous formater l'identifiant? séparées par des virgules? Et quelle est la limite sur la quantité de données que vous pouvez mettre sur une chaîne de requête? Serait-ce mieux (autorisé?) Utiliser à la place des paramètres post et post?


J'éviterais spécifier le paramètre de requête dans une en-tête HTTP car cela signifierait (a) que vous pourriez avoir plusieurs requêtes complètement différentes, mais qui partagent la même URI, et (b), il supprimerait la capacité des proxies intermédiaires de la requête de cache résultats pour améliorer les performances.


Je préférerais utiliser les URL suivantes pour vos ressources / utilisateurs / Dave / livres /



0
votes

Ceci est juste mon avis: xxx


0 commentaires

5
votes

ci-dessus a l'air bien, mais je changerais de noms pluriels, il se lit mieux: xxx

Ce que je ne comprends pas est l'utilisation-cas de la liste des identifiants séparés par des virgules. La question est de savoir comment vous arrivez aux identifiants? Je suppose que derrière la liste des identifiants il y a une sémantique, c'est-à-dire qu'ils représentent le résultat d'un filtre. Donc, au lieu de passer des identifiants, j'irais pour une API de recherche. Exemple simpliste: xxx

Si vous souhaitez itérer via votre collection de livres 10K, utilisez Paramètres de pagination .


0 commentaires

0
votes

Vous pouvez utiliser un paginator

Quelque travail de l'API reposant avec un paginateur pour d'énormes ressources telles que: P>

http://example.org/books?id=[]2&id=[]5&id=[]7&id=[]21


0 commentaires