2012-01-18 18 views
5

Estoy creando un servicio web RESTful y algunos de los recursos son funciones informáticas o de procesamiento. Por ejemplo, es posible que un usuario escale y convierta imágenes a través de la API enviando una imagen y recibiendo la imagen escalada o convertida de nuevo.Función/recurso de procesamiento RESTful: GET o POST?

De acuerdo con la REST Web Services Cookbook, sección 2.5, que debería utilizar GET:

Treat the processing function as a resource, and use HTTP GET to fetch a 
representation containing the output of the processing function. Use query 
parameters to supply inputs to the processing function. 

Esto es claro para los casos en los que las entradas son simples (como las largas coordenadas/latitud de un punto) Sin embargo, ¿debería seguir el mismo consejo para entradas más grandes, como imágenes? Hasta donde sé, no es posible enviar esta cantidad de datos como un parámetro de consulta.

Respuesta

6

Usar POST. En efecto, está haciendo una carga de imagen y procesando en el servidor. No se puede pensar en otra forma de hacerlo a menos que la imagen ya esté almacenada en el servidor.

+0

Esta es la noción importante aquí: "la imagen ya está almacenada en el servidor". Ya sea para llegar allí con PUT o POST es una [pregunta diferente] (http://stackoverflow.com/questions/630453/put-vs-post- inrest). – kdbanman

0

Debido a las limitaciones del protocolo en HTTP, tengo un consejo en contra. Este es un ejemplo muy válido y muy viable de una excepción que debería hacerse a esta regla.

+0

En su forma actual, esta respuesta no debería ser la aceptada. Sigue leyendo, compañero de Google. – kdbanman

1

La imagen es un recurso. Use PUT para poner el recurso en el servidor, luego GET el recurso, proporcionando parámetros que indiquen el tamaño deseado.

+0

¡Guau, esto es bastante estimulante! – sivabudh

+1

Use 'PUT' si solo el cliente envía ID de imágenes como parte de la solicitud. Use 'POST' si el servidor genera ID de imágenes y las devuelve con éxito. Google "REST idempotency", o vea [esta pregunta] (http://stackoverflow.com/questions/630453/put-vs-post- in -rest) – kdbanman

+0

¿Qué ocurre si nos preocupa el almacenamiento? entonces no podemos guardar los datos, y luego PUT no tiene sentido – cammil