У меня есть приложение, которое отправляет сообщения пользователям. В почтовом запросе передается строка XML, содержащая всех пользователей, которые должны получить это конкретное сообщение. Если какой-либо из пользователей в списке не существует, я возвращаю список отсутствующих пользователей клиенту для дальнейшей оценки.
Теперь я спрашиваю себя, каков будет правильный код статуса для приложения, говорящего, что запрос был принят, но были вещи, которые нельзя было сделать.
Этой проблемы можно было бы избежать, если бы не было разрешено включать в список отсутствующих пользователей. Тогда при отправке будет просто ошибка 4xx. Но формировать API таким образом нет смысла. С другой стороны, я мог бы рассматривать состояние ошибки как чисто конкретное приложение. Но посылать 200 кажется неправильным. И было бы неплохо дать клиенту подсказку, когда нужно внимательно изучить ответ об ошибке. например, чтобы не отправлять сообщения этим пользователям снова и снова
источник
У меня была такая же проблема, и в итоге я использовал два разных решения:
202: Accepted
, указывающий, что запрос был в порядке, но нет гарантии, что все действительно прошло должным образом.200
ответ в ответ, но включите список того, что не соответствует действительности в теле ответа.Второй обычно работает лучше всего, но первый отлично подходит, если вы ленивы или используете очередь для обработки.
источник
Что насчет использования частичного содержимого 206. Я знаю, что 206 больше относится к диапазонам, но что, если это может указывать на частично успешный запрос?
источник
Протокол передачи гипертекста имеет дело со стороной передачи. В нем нет кодов ошибок для устранения ошибок на уровне приложения.
Вернуть 200 - это правильное решение. Что касается HTTP, запрос был получен правильно, обработан должным образом, и вы отправляете ответ обратно. Итак, на уровне HTTP все в порядке. Любые ошибки или предупреждения, связанные с приложением, работающим поверх http, должны быть внутри ответа. Это также предотвратит некоторые неприятные проблемы, с которыми вы можете столкнуться с прокси-серверами, которые могут не обрабатывать определенные ответы так, как вы ожидаете.
источник