2012-05-22 18 views
9

Digamos que tengo que representa recursos imágenesOtras acciones de descanso en un recurso

PUT/images/[ID] con la ruta -> me va a crear un nuevo recurso de imagen si ya presentes actualizaciones Mi recurso

la POST/images/[id] -> cambiar o actualizar un recurso Ex, nombre de la imagen

bORRAR/images/[id] -.> esto eliminará mi recurso

GET/images/[id] -> me da los detalles de la imagen

Ahora la pregunta real. ¿Qué sucede si necesito agregar acciones adicionales a las imágenes? Digamos que el recurso de imagen responderá a una acción de reducción de ojos rojos o cualquier otro cultivo como, cambiar el tamaño

Entonces, ¿cómo se considera que estas medidas y cómo esto se debe llamar en la interfaz de descanso?

/images/[ID]/remove_redeye

/images/[id]/cultivo

/images/[id]/cambiar el tamaño de

es la llamadas anteriores válidos en la interfaz de descanso? Estoy confundido acerca de qué debe considerarse esta acción (PONER POST).

Respuesta

6

"Eliminar ojos rojos", "cultivo", y "redimensionar" sonar como acciones que "cambiar o actualizar un recurso." Pertenecerían en una acción PUT. (Creo que mezcló PUT y POST en su pregunta, consulte the verbs listed at w3c.)

La forma de transmitir la naturaleza de la acción depende de lo que se está PUBLICANDO. Por ejemplo, si estuviéramos hablando de un formulario que se encuentra sobre un registro de base de datos, el POST simplemente sería la información para ese registro. No sería necesario especificar qué campos se están modificando porque el objeto completo se está enviando en su estado nuevo.

¿Está el objeto completo siendo POST en su nuevo estado en este caso? ¿O el objeto vive solo en el lado del servidor y la interfaz solo está enviando una solicitud para algún tipo de acción? A mí me parece lo último, según la información provista.

En ese caso, puede incluir en el POST más información sobre la acción. Tenga en cuenta que un POST puede contener pares clave/valor en sus datos y/o un cuerpo POST más grande y complejo. Este cuerpo puede contener XML, por ejemplo, especificando mucha más información para que el servidor use en el procesamiento de la solicitud. Tal vez algo como esto:

<image id="123"> 
    <resize> 
     <width>200</width> 
     <height>200</height> 
    </resize> 
</image> 

Esto podría incluso permitir múltiples acciones dentro de la misma petición, que permite al usuario probar varias cosas del lado del cliente antes de comprometer a todos en una sola unidad de trabajo del lado del servidor. Cómo lo procesaría o si es incluso aplicable en este caso, depende de usted, por supuesto.

1

PUT/images/[id] significa agregar un nuevo recurso o reemplazar completamente uno existente.

POSTAL medios para crear (/ imágenes) o para modificar un recurso (/ images/[id]). Si crea un recurso, el servidor puede devolver ese recurso por usted.

Para la modificación de varias acciones sobre el mismo recurso (POST), que tienden a utilizar un encabezado personalizado para definir el tipo de modificación.En este caso sus recursos

/images/[id]/remove_redeye 
/images/[id]/crop 
/images/[id]/resize 

se traduciría en:

POST /images/[id] HTTP/1.1 
X-RESTAction [remove_redeye|crop|resize] 
Cuestiones relacionadas