2016-05-04 6 views
1

У меня есть RESTful API с Spring HATEOAS. Я пытаюсь придерживаться Уровня 3. И теперь у меня есть ресурс и операции, которые могут быть выполнены на нем. Один из них связан с Профиль ресурс. Профили могут быть клонированы. И теперь мне интересно, как это сделать правильно. Операция клонирования уже создает новый профиль. Я думал о:REST Level 3 с HATEOAS - Как реализовать пользовательские действия

  • api/profile/{id}/clone - POST. url содержит идентификатор профиля, который должен быть клонирован. Другие требуемые параметры находятся в запрашивающем органе
  • api/profile/clone - POST. вся информация находится в теле запроса.

Что лучше? Или, может быть, оба не являются надлежащими способами реализации этих действий, и должен использоваться другой подход?

+0

Если URL содержит глагол это определенно не ОТДЫХ. Стрите '/ clone' из второй альтернативы, тогда у вас это есть. – zeroflagL

+0

если я снимаю клон, как я узнаю, что операция клонирования? – dragonfly

+0

Потому что он имеет соответствующий тип носителя. – zeroflagL

ответ

0

Вы можете сделать запрос POST для api/profile/{id}/ресурса клонирования, это абсолютно правильно!

Просто помните, что POST Operatios, как правило, unsafed, а не imdepotent, что означает, что каждый новый входящий запрос на ваш ресурс будет создать новый ...

http://www.restapitutorial.com/lessons/idempotency.html

+0

_ «это абсолютно правильно» _ Аргументы, пожалуйста. Нет никакого права. – zeroflagL

+0

В этом сценарии POST - это лучший вариант для создания «дочернего» ресурса из профиля, передающего по пути родительского ресурса его идентификатор ... Ни PUT на этом URI, ни второй предложенный вариант не подходят в этом случае. .. Операция клонирования будет выполнена из профиля (родительского ресурса), поэтому uri должен быть: api/profile/{id}/clone - POST –

+0

Вопрос не в методе, а в отношении URL, в частности, в отношении уровня 3 модели зрелости Ричардсона. Если клон используется как глагол (и мы можем предположить, что это так), то это не RESTful. Если он используется как существительное, и вы можете публиковать его, то он должен быть коллекцией, но вы не можете читать, так что это не так. Таким образом, ни один из подходов OP не может рассматриваться как RESTful по модели Ричардсона. – zeroflagL

Смежные вопросы