2013-12-24 3 views
1

Если я выполняю POST/quizzes/1/answer/final, я хочу, чтобы ответ сохранялся на сервере, но я также хочу установить дату отправки на ресурсе викторины, а также обновить статус викторины до сделанный. Могу ли я это сделать, когда я отправляю POST в указанный URI или должен ли я сделать другой запрос, когда я обновляю ресурс викторины?Может ли дополнительный ресурс изменить свой «родительский» ресурс в REST?

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

Что я должен ответить с помощью этого ПОСТ?

Должен ли я ответить ответом и 20x, 303, указывающий на ответ, 303, указывающий на викторину и т. Д.?

ответ

1

В конечном счете, переходы состояния на вашем сервере и ресурсы ответа зависят от вас и ваших требований. REST - только руководство.

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

Редактировать, чтобы добавить: Также при написании любого сервиса я начинаю с предположения, что клиент будет лгать мне. Если клиент отвечает за отправку ответа, а затем соответствующим образом обновляет викторину, что должно остановить клиента от отправки ответа, а затем установить время викторины до 30 лет назад или thousand years in the future?

Что касается успешного ответа от POST, я думаю, что это будет зависеть от того, что должен делать клиент. Если они захотят пойти в любом направлении, то вариант может быть 200 с предоставленным ответом (ресурс на текущем uri, в качестве подтверждения) и канонические ссылки на ответ и ссылку на общую викторину. Я склоняюсь к 200, поскольку это явно указывает на успех, однако это мнение, и снова, как будет вести себя ваш предполагаемый клиент. (Это браузер или программный клиент или оба? Это может повлиять на ваше решение)

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