Как реализовать копирование-вставку ресурса в REST? - PullRequest
3 голосов
/ 13 мая 2009

Как бы вы реализовали поддержку копирования-вставки RESTful способом?

Допустим, у меня есть ресурс книжного магазина. И книги в каждом магазине

http://mydomain.com/rest/book-stores/1
http://mydomain.com/rest/book-stores/1/books/12

Мне нужно, чтобы клиент мог вызвать функцию копирования и вставки книги в другой магазин.

Реализация следующего:

PUT http://mydomain.com/rest/books/1/copy-paste

кажется очень похожим на RPC. Есть ли у вас какие-либо предположения, как эта операция может быть смоделирована RESTful способом?

Ответы [ 3 ]

9 голосов
/ 13 мая 2009

Копировать = GET http://mydomain.com/book/1

Вставить = PUT http://mydomain.com/book/2 или POST http://mydomain.com/book

1 голос
/ 09 июля 2009

Это проблема, только если ваши ресурсы организованы так, чтобы имитировать иерархическую систему. Как файловая система.

Я предпочитаю неиерархические ресурсы. «Путь» к файлу будет просто свойством файла. Для копирования-вставки есть два варианта.

  1. Если вы действительно хотите просто другую ссылку "путь", добавьте еще одну запись для свойства "путь". Точно такой же файл находится "в" обеих "папках".

  2. Если вам нужна новая версия файла, эффективно после этого вносящая изменения, создайте новый ресурс (другой URI) с другим свойством path.

  3. Для перемещения просто измените свойство path.

Если вы настаиваете на иерархии, просто имитируйте, как файловая система выполняет копирование-вставку и перемещение.

Копировать просто. ПОЛУЧИТЬ ресурс для копирования.

Чтобы вставить POST, потому что вы создаете новый ресурс, новый URI.

Если вам нужно сделать ход, вам, вероятно, нужно УДАЛИТЬ старый ресурс.

При желании вы можете указать местоположение в запросе на удаление, позволяя серверу перенаправлять пользователей, ищущих перемещенный ресурс, в его старом расположении.

0 голосов
/ 13 мая 2009

Я бы хотел, чтобы пользователь выполнил команду PUT для выполнения действия.

То есть переменная в данных формы содержит правильное действие для выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...