Я б сказав, жодне.
Чому б не 404 (не знайдено)?
Код стану 404 повинен бути зарезервований для ситуацій, коли ресурс не знайдений. У цьому випадку ваш ресурс - це сукупність користувачів . Ця колекція існує, але наразі вона порожня. Особисто я був би дуже заплутаний як автор клієнта вашої заявки, якщо я отримав 200
один і 404
наступний день лише тому, що хтось видав пару користувачів. Що я повинен робити? Моя URL-адреса неправильна? Хтось змінив API та знехтував залишити переадресацію.
Чому б не 204 (Без вмісту)?
Ось уривок з опису коду статусу 204 від w3c
Сервер виконав цей запит, але йому не потрібно повертати тіло об'єкта і, можливо, захоче повернути оновлену інформацію.
Хоча це може здатися розумним у цьому випадку, я думаю, що це також збентежить клієнтів. A 204
повинен означати, що деяка операція виконана успішно, і дані не потрібно повертати. Це ідеально, як відповідь на DELETE
запит або, можливо, запуск якогось сценарію, для якого не потрібно повертати дані. У випадку api/users
, як правило, ви розраховуєте отримати представництво своєї колекції користувачів. Надіслати орган відповіді один раз, а інший раз не надіслати його, є непослідовним та потенційно оманливим.
Чому я використовую 200 (ОК)
З причин, зазначених вище (послідовність), я б повернув представлення порожньої колекції. Припустимо, ви використовуєте XML. Нормальний орган реагування на непусту колекцію користувачів може виглядати так:
<users>
<user>
<id>1</id>
<name>Tom</name>
</user>
<user>
<id>2</id>
<name>IMB</name>
</user>
</users>
і якщо список порожній, ви можете просто відповісти чимось подібним (поки все ще використовуєте a 200
):
<users/>
Так чи інакше, клієнт отримує орган відповіді, який дотримується певного, добре відомого формату. Немає зайвої плутанини та перевірки коду статусу. Також не порушується визначення коду статусу. Усі щасливі.
Ви можете зробити те ж саме з JSON або HTML або будь-яким іншим форматом.