Estoy tratando de diseñar un servicio similar al del sistema de archivos REST, y las operaciones de copiar/mover me están causando algunos problemas.operaciones RESTful copy/move?
En primer lugar, la posibilidad de subir un nuevo archivo se realiza utilizando un PUT para URL final del archivo:
PUT /folders/42/contents/<name>
La pregunta es, ¿y si el nuevo archivo ya reside en el sistema bajo un URL diferente?
Copiar/mover idea 1: PUT con encabezados personalizados.
Esto es similar a S3's copy. Una opción de venta que se ve igual que la carga, pero con un encabezado personalizado:
PUT /folders/42/contents/<name>
X-custom-source: /files/5
Esto es bueno porque es fácil de cambiar el nombre del archivo en copiar/mover tiempo. Sin embargo, S3 no ofrece una operación de movimiento, tal vez porque un movimiento con este esquema no será idempotente.
Copiar/mover Idea 2: POST a carpeta principal.
Esto es similar al Google Docs copy. Un POST a la carpeta de destino con contenido XML que describe el archivo de origen:
POST /folders/42/contents
...
<source>/files/5</source>
<newName>foo</newName>
que podría ser capaz de publicar en la nueva dirección URL del archivo para cambiar su nombre ..? De lo contrario, me veo obligado a especificar un nuevo nombre en el contenido XML, lo que amplifica el RPCness de esta idea. Tampoco es tan consistente con la operación de carga como idea 1.
Al final estoy buscando algo que sea fácil de usar y comprender, ¡además de criticar lo anterior, sin duda nuevas ideas son bienvenidas!
Lo siento, quise decir que si el nuevo archivo ya reside en el sistema en una URL diferente. Es decir, no quiero volver a subir el archivo. Solo quiero que se reubique. – ladenedge
Fuimos con una POST al contenedor primario. Parecía ser el método más fácil de entender por los recién llegados. Gracias por las ideas! – ladenedge
Debe enviar los parámetros de URL en el cuerpo del POST – Tarion