Обложка канала

Блог программиста S0ER. Мысли, ранний доступ к видео, фоточки, короткие посты. Ничего конкретного, но что-то будет полезным.

SOER

3 года назад
Открыть в
Статус коды HTTP В группе Naris подробно обсудили как нужно использовать статус коды в HTTP запросах. Хочу поделиться одним наблюдением. В отношении HTTP статусов нужно понять главное - это технические ошибки, которые являются следствием того, что запрошенный ресурс не может быть получен. А ресурсом является набор бизнес-данных, которые вам нужны. Понятно, что если вы получаете какую-то страницу в сети, то она либо получена (200), либо произошла ошибка, и тогда нужный статус подскажет какая. Но сейчас очень много рестовых API, которые не только получают данные, но и реализуют бизнес-логику приложения прежде чем отдать данные. Получается, что раз есть бизнес-логика, то у нас может быть такая ситуация, что ошибки БЛ не дают сформировать конечный результат, который был запрошен по HTTP, и возникает вопрос: "Ошибки бизнес-логики должны оформляться с использованием http кодов?". Разные команды отвечают на этот вопрос по-разному, я считаю, что нет. Ошибки БЛ это как правило вещи, которые можно сформулировать на бизнес-языке и эти ошибки имеют смысл для пользователя. Поэтому данные об ошибках в логике - это тоже данные. Они должны отдаваться через 20х статус. А вот если речь идет о технических ошибках, когда мы неправильно указали, например, имя поля или использовали не ту кодировку, не имеют отношения к бизнесу, более того они делают невозможным вернуть запрошенный ресурс пользователю, а значит должны отдаваться 4хх статусами. Приведу пример, yookassa.ru/develop…tp-codes - ЮКасса вовзвращает 200й код даже если произошла ошибка оплаты (статус - canceled), потому что это уровень БЛ. Но в случае "технических" проблем возвращает статусы 4хх и 500, что логично, так как ошибки не относящиеся к БЛ делают невозможным вернуть запрошенный "ресурс".