Я перебуваю на перехресті з деяким дизайном API для клієнта (JS у браузері), щоб поговорити з сервером. Ми використовуємо HTTP 409 Conflict для представлення невдалої дії через дію запобіжного блокування. Замок satefy запобігає випадковим внесенням змін у виробничі системи наших клієнтів. Мені було доручено попрацювати з 409s трохи більш витончено клієнтом, щоб вказати, чому конкретний виклик API не вдався.
Моє рішення полягало в тому, щоб перекрити обробники відмов будь-якого з наших дзвінків AJAX, які відображатимуть сповіщення про клієнта, коли щось виходить з ладу через 409 - це все нормально і добре працює поряд з іншими помилками 4XX і 5XX, які використовують той самий механізм.
Виникла проблема, коли один із наших обробників маршрутів відповідав на 409s, коли виникає помилка ділової логіки - моя обгортка AJAX повідомляє, що запобіжник увімкнено, тоді як існуючий обробник несправності клієнта повідомляє, що (на його думку) проблема базується на тілі відповіді. Простим рішенням було б змінити відповідь обробника або код статусу, який ми використовуємо для представлення блокування безпеки.
Що приводить мене до мого перехрестя: чи повинні коди статусу HTTP навіть використовуватися для представлення помилок ділової логіки? Це питання стосується тієї ж проблеми, з якою я стикаюся, але вона не отримала особливої тяги. Як запропоновано у пов'язаній відповіді, я схиляюся до використання HTTP 200 OK з відповідним органом, щоб представити збій у діловій логіці.
У когось є якісь переконання? Хтось може переконати мене, що це неправильний спосіб представити невдачу?
400 Bad Request
як ковдра HTTP-код, здається, найкраще покриває помилки ділової логіки як клас.
400 Bad Request
коли дані відсутні або неможливо прочитати / проаналізувати. Тобто самі дані запиту в чомусь погані.
400 Bad Request
. Причина такого розмежування полягає в тому, що майбутні системи, розробники чи читачі документів можуть бути заплутані вашим відхиленням від світового стандарту.