2015-06-08 2 views
2

Рассмотрите вызов API, который создает пользователя. При успешном создании пользователя создается и отправляется электронное письмо с подтверждением. Код статуса ответа 201.http status code for failed email send

Если пользователь не создается, код статуса ответа 422.

Что следует код состояния ответа, если пользователь создан НО отправки по электронной почте подтверждение не удалось?

+0

Почему бы и не быть 422? Кажется, это имеет смысл, поскольку полное действие не может быть завершено. Другой вариант - переместить панель для завершения, чтобы просто создать пользователя, и оставить письмо с подтверждением как необязательное действие. В этом случае отправьте 200 с дополнительной информацией о том, было ли отправлено электронное письмо или нет. –

+1

Ядро проблемы заключается в смешивании создания ресурса RESTful и действия RPC-стиля. Создание пользователя в мире RESTful будет атомарной операцией и возвратом 201 или 422 (или любым другим кодом ошибки, который вы выберете). Тогда отправкой письма с подтверждением может быть другая POST to/api/user/confirmemailtask, которая затем отталкивает процесс электронной почты. Когда вы объединяете два, вы обнаружите области неопределенности – Edgar

+0

@edgar настолько очевидны. Спасибо. – csi

ответ

3

Основная проблема заключается в смешивании создания ресурса RESTful и действия RPC-стиля. Создание пользователя в мире RESTful будет атомарной операцией и возвратом 201 или 422 (или любым другим кодом ошибки, который вы выберете). Тогда отправкой письма с подтверждением может быть другая POST to/api/user/confirmemailtask, которая затем отталкивает процесс электронной почты. Когда вы объединяете два, вы обнаруживаете области неопределенности.

(отобранный комментарий для потомков)