2016-07-14 3 views
2

Скажем, у нас есть конечная точка, как это:Каков правильный код ответа REST для действительных данных запроса (пока)?

/user/[email protected]/notification

возвращает один объект уведомления, который генерируется сервером. Когда вы запрашиваете этот URL, три ситуации может произойти:

  1. Пользователь не существует, в этом случае я возвращаю 404

  2. Пользователь существует, и уведомление присутствует. В этом случае я возвращаю 200 с уведомлением в теле

  3. Пользователь существует, уведомление отсутствует. В этом случае я могу вернуть либо 404 NOT FOUND, либо 204 NO CONTENT.

Я склоняюсь к 204.

404 указывает на неисправную ситуацию, когда эта конечная точка действительно действительна, это просто, что объект недоступен прямо сейчас, но может быть доступен, если вы запросите еще раз через 2 секунды. Кроме того, вы не тот, кто отвечает за создание объекта, поэтому вы не можете помочь ситуации.

+1

Да, звуки о праве. –

+1

Технически, ответ на вопрос '204' совершенно применим. Но я бы пошел на '200' с пустым массивом в полезной нагрузке ответа. Это означает, что запрос преуспел, но нет доступных уведомлений, то есть пустого массива. –

+0

@ CássioMazzochiMolin Эта конечная точка возвращает особый объект, а не массив. Вы вернете пустой объект? – StijnSpijker

ответ

1

Я бы сказал, что вы должны ответить 200 OK вместо 204 No Content.

Вот specification для 204, он говорит:

204 ответа позволяет серверу, чтобы указать, что действие было успешно применяется на целевой ресурс, а это означает, что агент пользователь не необходимо перейти от своего текущего документа « » (если есть).

Из этого следует, что код 204 означает, что ресурс не изменился или не важен для текущего процесса, чтобы беспокоить пользователя. Он не означает (по крайней мере, не явно), что ресурс «пуст» (только то, что ответ пуст).

Ответ с 404 был бы объективно неправильным, так как ресурс существует.

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