What is Nostr?
npub1w2y…vxf5
2024-11-05 13:54:36

npub1w2…evxf5 on Nostr: Наброшу и сюда тоже, пожалуй. Сегодня снова ...

Наброшу и сюда тоже, пожалуй.
Сегодня снова была беседа на тему смешивания транспортного уровня и логического.

В смысле я тут периодически вижу горение, когда сервис возвращает 200, а внутри {"error": "go fuck yourself"}. И с моей точки зрения это вообще выглядит абсолютно нормально, потому что HTTP слой работает, сервер в норме, запрос дошёл, ответ вернулся. А вот то, что в запросе была написана херня, это вообще ни разу не проблема сервиса.
Но в комментах к каждому такому треду обязательно найдётся эксперт, который скажет, что нельзя возвращать двухсотый код при ошибке.

А я вот реально не понимаю этой проблемы. Скажем, у нас внутренние сервисы (типа гитхаба) по той же логике работают.
Если сервис начал пятисотить — надо срочно жаловаться овнеру сервиса.
Ну для четырёхсотых — возможны варианты. Скажем, я регулярно наступаю на 429, но тут я сам виноват, да.

А вот npub10ke85u7cw7latemv8l72dcd3s729x8n9yjw3eaxrqvc0w7pertqsa0jnef (npub10ke…jnef) говорит, что принято возвращать ОШИБКУ, если что-то пошло не так.

Но я вот сейчас пилю сервис на axum, и там когда что-то реально ИДЁТ НЕ ТАК, типа сервер возвращает 404, то падение происходит на уровне middleware, и ты это обрабатываешь реально как exception. Ну то есть проблема уровня «Хозяин, там сломалась труба, по которой ходили запросы!». А если ты просто запросил что-то не то, и тебе вернулась ошибка, то ты получаешь самый обыкновенный Result, и обрабатываешь его, как Result: там может быть ответ, а может быть ошибка, но это именно логическая ошибка, не ошибка транспортного слоя.

Для меня реально немного диковато выглядит вот этот прикол с тем, что сервер тебе возвращает 401, если ты запросил то, что тебе запрещает бизнес-логика, а не попробовал отправить запрос в эндпоинт чужого сервиса.

#дыбр #dev #web
Author Public Key
npub1w2yv0c25urmhcr9q6n4d72sjxnmtu4ulqw3h936dhktuaxc8vrjs7evxf5