Question

Avec les services Web, il est recommandé de regrouper plusieurs appels de service en un seul message afin de réduire le nombre d'appels distants. Est-il possible de faire cela avec les services RESTful?

Était-ce utile?

La solution

Je ne vois pas en quoi le traitement par lots des demandes a un sens dans REST. Puisque l'URL d'un service basé sur REST représente l'opération à effectuer et les données sur lesquelles l'exécuter, les demandes de traitement par lots briseraient sérieusement le modèle conceptuel.

Une exception serait si vous exécutiez la même opération plusieurs fois sur les mêmes données. Dans ce cas, vous pouvez soit entrer plusieurs valeurs pour un paramètre de requête, soit coder cette répétition dans le corps (toutefois, cela ne fonctionnerait vraiment que pour PUT ou POST). L’API REST Gliffy prend en charge l’ajout de plusieurs utilisateurs au même dossier via

.
POST /folders/ROOT/the/folder/name/users?userId=56&userId=87&userId=45

qui est essentiellement:

PUT /folders/ROOT/the/folder/name/users/56
PUT /folders/ROOT/the/folder/name/users/87
PUT /folders/ROOT/the/folder/name/users/45

Comme l’a souligné l’autre intervenant, les résultats de la pagination à partir d’une entité GET peuvent être effectués via les paramètres de requête:

GET /some/list/of/resources?startIndex=10&pageSize=50

si le service REST le prend en charge.

Autres conseils

Si vous avez vraiment besoin de traiter par lots, Http 1.1 prend en charge un concept appelé HTTP Pipelining qui vous permet d’envoyer plusieurs demandes avant de recevoir une réponse. Découvrez-la ici

.

Je suis d'accord avec Darrel Miller. HTTP prend déjà en charge le traitement en pipeline HTTP, plus le support HTTP restant actif vous permettant de diffuser plusieurs opérations HTTP simultanément dans le même socket pour éviter d’attendre les réponses avant de transmettre en continu les nouvelles demandes au serveur, etc.

.

Ainsi, avec le traitement en pipeline HTTP et le maintien en activité, vous obtenez l’effet du traitement par lots tout en utilisant la même API REST sous-jacente. Il n’est donc généralement pas nécessaire de créer une autre API REST pour votre service

.

L’équipe d’Astoria a bien utilisé le mime en plusieurs parties pour envoyer un lot d’appels. Différent du traitement en pipeline, le message en plusieurs parties peut déduire l'intention d'une opération atomique. Semble plutôt élégant.

Bien sûr, il existe un moyen, mais cela nécessiterait un support côté serveur. À ma connaissance, il n’existe pas de méthode unique et magique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top