Я пытаюсь создать службу, похожую на файловую систему RESTful, и операции копирования / перемещения вызывают у меня некоторые проблемы.
Прежде всего, загрузка нового файла выполняется с использованием PUT для окончательного URL-адреса файла:
PUT /folders/42/contents/<name>
Вопрос в том, что, если новый файл уже находится в системе под другим URL-адресом?
Копирование / перемещение Идея 1 : PUT с пользовательскимизаголовки.
Это похоже на копию S3 .PUT, который выглядит так же, как при загрузке, но с настраиваемым заголовком:
PUT /folders/42/contents/<name>
X-custom-source: /files/5
Это хорошо, потому что легко изменить имя файла во время копирования / перемещения.Однако S3 не предлагает операцию перемещения, возможно, потому что перемещение по этой схеме не будет идемпотентным.
Копирование / перемещение Идея 2 : POST в родительскую папку.
Это похоже на копию Документов Google .POST для папки назначения с содержимым XML, описывающим исходный файл:
POST /folders/42/contents
...
<source>/files/5</source>
<newName>foo</newName>
Возможно, я смогу POST к новому URL-адресу файла, чтобы изменить его имя ..?В противном случае я застрял с указанием нового имени в содержимом XML, что усиливает RPCness этой идеи.Это также не так согласуется с операцией загрузки, как идея 1.
В конечном счете, я ищу что-то, что легко использовать и понимать, поэтому в дополнение к критике вышесказанного, новые идеи, безусловно, приветствуются!