Pregunta

Con los servicios web, se considera una buena práctica agrupar varias llamadas de servicio en un solo mensaje para reducir la cantidad de llamadas remotas.¿Hay alguna forma de hacer esto con los servicios RESTful?

¿Fue útil?

Solución

No veo cómo las solicitudes por lotes tienen algún sentido en REST.Dado que la URL en un servicio basado en REST representa la operación a realizar y los datos sobre los cuales realizarla, realizar solicitudes por lotes rompería seriamente el modelo conceptual.

Una excepción sería si estuviera realizando la misma operación con los mismos datos varias veces.En este caso, puede pasar varios valores para un parámetro de solicitud o codificar esta repetición en el cuerpo (sin embargo, esto solo funcionaría para PUT o POST).La API REST de Gliffy admite agregar varios usuarios a la misma carpeta a través de

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

que es esencialmente:

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

Como señaló el otro comentarista, la paginación de resultados de un GET se puede realizar mediante parámetros de solicitud:

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

si el servicio REST lo admite.

Otros consejos

Si realmente necesita realizar lotes, Http 1.1 admite un concepto llamado HTTP Pipelining que le permite enviar múltiples solicitudes antes de recibir una respuesta.Échale un vistazo aquí

Estoy de acuerdo con Darrel Miller.HTTP ya admite HTTP Pipelining, además HTTP admite mantener vivo lo que le permite transmitir múltiples operaciones HTTP simultáneamente a través del mismo socket para evitar tener que esperar las respuestas antes de transmitir nuevas solicitudes al servidor, etc.

Entonces, con la canalización HTTP y el mantenimiento vivo se obtiene el efecto de procesamiento por lotes mientras se usa la misma API REST subyacente, por lo que normalmente no hay necesidad de otra API REST para su servicio.

El equipo de Astoria hizo un buen uso del mimo de varias partes para enviar un lote de llamadas.A diferencia de la canalización, el mensaje de varias partes puede inferir la intención de una operación atómica.Parece bastante elegante.

Por supuesto que hay una manera, pero requeriría soporte del lado del servidor.Que yo sepa, no existe una metodología mágica que se ajuste a todos los casos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top