Когда я использую API, в качестве клиента мне приходится обрабатывать случаи «успеха», отличные от случаев «ошибок»; У меня нет выбора там. Следовательно, вы должны возвращать ошибку в ситуациях, которые клиент хочет обрабатывать по-разному, и успех в ситуациях, которые клиент хочет обрабатывать одинаково.
Если я сделаю запрос, который теоретически мог бы вернуть любое количество результатов, ноль, один, двести и т. Д., Тогда вы должны возвращать «успех» всякий раз, когда API предоставляет полный список всех результатов. И, возможно, в случаях, когда имеется много результатов, вы вернули частичный список результатов, чтобы избежать чрезмерного размера, и существует согласованный способ получения других результатов. Это потому, что, как клиент, я часто хочу обрабатывать случай нулевых результатов, как случай большего количества результатов. Я мог бы относиться к этому по-другому, но я не хочу быть вынужденным.
Это отличается в том случае, если я ищу значение. Я ожидаю ровно одного результата, ценности, которую я ищу. И мне нужен этот один результат, чтобы продолжить то, что я хочу сделать осмысленным образом. Здесь гораздо более приемлемо возвращать статус 404 для случая, когда значение отсутствует, так как в любом случае мне нужно обрабатывать этот случай иначе.
Сводка: если клиент ожидает какого-либо числа результатов, от нуля до большого числа, то возвращает «успех», если все результаты получены, даже если число равно нулю. Если клиент ожидает ровно один результат, верните успех, если результат найден, и ошибку, если результат не найден.