En passant de la Liste d'Entiers pour OBTENIR de l'API REST
Je voulais récupérer la Liste des Entités à partir de la base de données à l'extrémité Avant.
Donc, j'ai écrit le POST RESTE HTTP appel de Spring MVC.
Mais j'ai lu le HTTP documentation qui dit à chaque fois que vous devez récupérer des données à partir de la base de données préfèrent OBTENIR de l'appel.
Donc, Est-il, il est tout ce que je peux remplacer le POSTE d'appel pour OBTENIR de l'appel d'angular JS et passer de la liste d'Entiers.
Mais, GET HTTP présente de nombreux inconvénients, tels que la longueur de l'URL est limitée.En considérant le cas où nous avons à chercher de 1000 entités de la base de données.
Veuillez me suggérer la façon possible pour obtenir les entités ou écrire OBTENIR de l'API REST de Spring MVC pour une liste d'entiers(qui fait référence à l'ID d'Entités).
Pour Exemple : Considérons il y a 100 livres dans le tableau, Mais je veux seulement quelques livres, dire id : 5,65,42,10,53,87,34,23.
C'est pourquoi je suis de passage cette Liste d'Id dans une Liste d'Entiers en POST-appel.
Actuellement bloqué comment faire pour convertir ce pour OBTENIR de l'appel. En Bref, comment passer de la Liste d'Entiers par OBTENIR de l'appel RESTE.
OriginalL'auteur virsha | 2015-01-15
Vous devez vous connecter pour publier un commentaire.
Je préfère une variante via HTTP variable de chemin d'accès pour votre problème, parce que dans RESTE idéologie d'un ID de ressource est passé après un nom de ressource ' http://../resource/id " et HTTP paramètres sont utilisés pour le filtrage.
Par le biais des paramètres HTTP
Si vous avez besoin de passer votre id par le biais des paramètres HTTP, voir un axample ci-dessous:
Ici est votre Spring MVC méthode de contrôleur:
Et vous pouvez faire un appel en utilisant la prochaine variantes:
Également prendre un coup d'oeil à cette discussion: https://stackoverflow.com/a/9547490/1881761
Via HTTP variables de chemin d'accès
Aussi, vous pouvez passer votre id par le biais de la variable de chemin, voir un exemple ci-dessous:
Et votre appel sera ressembler à ceci: http://server:port/ctx/books/5,65,42
Quant à la variable de chemin d'accès scénario, est-ce le modèle pris en charge par Jersey?
OriginalL'auteur Ievgen
Pros de GET HTTP appel : Il est toujours utilisé pour l'extraction de Données.(De ce point de vue : nous devons mis en œuvre pour chaque et chaque et la récupération des données)
Par le biais des paramètres HTTP
Si vous avez besoin de passer votre id par le biais des paramètres HTTP, voir un axample ci-dessous:
Ici est votre Spring MVC méthode de contrôleur:
Il fonctionne très bien mais pour le cas exceptionnel : dire URI est au-dessus de 2 048 caractères. Cela signifie qu'il existe de nombreuses Id dans la liste(par exemple : 1000)
ensuite ses déclenche une exception :
retour 414 (Request-URI Too Long)
qui est http://www.checkupdown.com/status/E414.html
Après quelques recherches, MA COMPRÉHENSION est : Le protocole HTTP n'a pas lieu a priori de limite sur la durée d'une URI. Les serveurs DOIVENT être en mesure de gérer l'URI de toutes les ressources qu'ils servent, et DOIT être capable de gérer les Uri de la surabondance de la longueur si elles permettent d'OBTENIR des formulaires qui pourrait générer un tel Uri. Un serveur DOIT retourner 414(Request_URI Trop Long) si un URI est plus long que le serveur peut gérer.
J'ai également passé par des sites comme pour obtenir l'OBTENIR URI longueur :
Donc, conclusion, est de tenir le POST d'appel lorsqu'il y a peut être variable URI longueur au moment de l'exécution pour ne pas avoir une telle exception[retour 414 (Request-URI Too Long)]
Ouais c'est vrai, nous pouvons éviter cette situation. C'est pourquoi j'ai traité ce dans le backend. par exemple: booksCategories
OriginalL'auteur virsha
Sinon, pour permettre des requêtes complexes, vous aurez besoin de donner à la requête de son propre repos de la langue. Pour créer une requête POST /bibliothèque/requête puis de le modifier avec des choses comme la POSTE /bibliothèque/de requête/12345 avec des données {id:34} et puis vous exécutez la requête GET /bibliothèque/livres?query=12345
OriginalL'auteur Lev Kuznetsov
Si vous voulez lire des entités à partir de votre API, vous devez utiliser un appel.
La meilleure façon de l'obtenir est d'utiliser une requête params comme filtre.
RESTE de la CONCEPTION ne peut pas récupérer plus d'une entité à chaque fois par id.
Un exemple:
GET /library/books/58731
-> retourne un seul livre identifiés par 58731GET /library/books?numPages>70
retourne tous les livres avec plus de 70 pagesJe pense que Si vous avez besoin de récupérer beaucoup de livres parce qu'ils ont une certaine logique que tous les matchs, essayez de le mettre comme une chaîne de requête.
Un autre exemple:
GET /library/books?stored>20150101
retourne tous les livres ajoutés à la bibliothèque sur 2015Si vous nous donner plus d'informations sur la collection et les exigences auxquelles nous allons répondre plus directement.
OriginalL'auteur alcuvi