170 похожих чатов

Тогда, это получается отделение транспортных ошибок от бизнесовых так как при

едином транспорте такое - оверхед дикий

но, как часто надо такое закладывать?

вот хороший вопрос

31 ответов

4 просмотра

1. Почему дикий оверхед(нужны бенчмарки)? 2. Как вы отличаете что 403 прилетело с сервера, а не с коробки посередине?

Artur-Karapetov Автор вопроса

1. по человеко-часам оверхед и без бенчей виден 2. по ошибке внутри

Artur Karapetov
1. по человеко-часам оверхед и без бенчей виден 2....

Чтобы разобрать ошибку внутри, надо всё равно смотреть payload. Если мы смотрим payload, то какая разница тогда на http-статусы?

Artur Karapetov
1. по человеко-часам оверхед и без бенчей виден 2....

нет там никакого оверхеда. это все и так, и эдак надо написать, и где-то одно больше времени сожрет, где-то другое. вопрос, как обычно, в том, что делать, когда приедут новые бизнес-требования. “главная задача архитектора - оттянуть принятие окончательных бизнес-решений как можно дальше” (с)

Геннадий Ковалёв
А чего за коробка посередине?

Например, корп. фаерволл или dlp-система.

Геннадий Ковалёв
А чего за коробка посередине?

Т.е. это типичная история в каком-нибудь банке: на все клиентские машины раскатывается свой CA, а все https-ресурсы отствечивают сертификатом подписанным этим CA. Классический mitm + разбор что там в http у вас бегает. Всё это ради того чтобы сотрудник либо не слил какие-то важные данные, либо не притащил малварь на свою машину.

Roman Timofeev
Например, корп. фаерволл или dlp-система.

Ну если отдали 403, надо прекратить запросы и сообщить куда надо. Какая разница кто её отдал. Ну а если нужны детали, то есть тело. Есть content-type application/json, есть кастомные заголовки в конце концов. Но код 403 извольте не трогать.

Artur-Karapetov Автор вопроса
Daniel Podolsky
нет там никакого оверхеда. это все и так, и эдак н...

по поводу оверхеда не согласен точно. в остальном да, зависит от системы, отсюда и мой вопрос (риторический): как часто и какие признаки, что надо закладывать подобное поведение.

Artur Karapetov
по поводу оверхеда не согласен точно. в остальном...

мне хватило в свое время одного аргумента, чтобы решить, что всегда и везде: как нам показать пользователю детализованную ошибку на его языке

Artur-Karapetov Автор вопроса
Daniel Podolsky
мне хватило в свое время одного аргумента, чтобы р...

почему не перекладываете на клиентов эту задачу? разные системы требуют разного поведения на разные ошибки

Artur Karapetov
почему не перекладываете на клиентов эту задачу? ...

а как клиент поймет, что именно означает 400, которую он получил?

Artur-Karapetov Автор вопроса

код ошибок

Artur Karapetov
код ошибок

код каких ошибок?

Roman Timofeev
1. Почему дикий оверхед(нужны бенчмарки)? 2. Как ...

2. например, контракт ответа может включать статус-код. коробка - левый пейлоад, ваш сервис - в пейлоаде status: 403 или в целом по типам ошибок(если ваша "коробка" конфигается)

Artur-Karapetov Автор вопроса

чтобы по пути никто(апи гейтвей, реверс-прокси) его не поменял на себе угодный

Daniel Podolsky
мне хватило в свое время одного аргумента, чтобы р...

А в чем проблема? Если сервер уже текст должен отдать, то клиент в запросе указывает нужный язык каким-нибудь Accept-Language. Сервер отвечает с кодом 400, устанавливает, например. Content-Type в application/json, и теле выплёвывает нужный json.

твой братишка
чтобы по пути никто(апи гейтвей, реверс-прокси) е...

А почему он (не) поменяет? Проблема ведь в чём: мы одну и ту же информацию пытаемся передать и через статусы транспортного протокола, и через payload. И от одного из этих способов сигнализации можно избавиться.

Геннадий Ковалёв
А в чем проблема? Если сервер уже текст должен отд...

мы реально хотим задачу локализации мобильных приложений решать на беке? мы здоровы ментально, нет?

Геннадий Ковалёв
А в чем проблема? Если сервер уже текст должен отд...

А если клиент пришёл с Accept: application/xml - мы ему xml должны выплюнуть?

Daniel Podolsky
мы реально хотим задачу локализации мобильных прил...

Я не понял, где надо её решать, поэтому и написал если. Если на клиенте, то всё тоже самое. Код http всё равно 400, тот же, например, json, а в теле самом Json внутренний код ошибки и фраза по-умолчанию. Клиент сам должен разрулить это.

Daniel Podolsky
не, тут точно “bad request” 🙂

Если серьёзно, я видел одно api, в которое можно сделать запрос с Content-Type: application/json и Accept: application/xml и сервис реально прожует json и выплюнет xml

Roman Timofeev
Если серьёзно, я видел одно api, в которое можно с...

swagger позволяет такое сконфигурить, и даже разумно выовет хендлеры

Daniel Podolsky
swagger позволяет такое сконфигурить, и даже разум...

Осталось найти кодген который это умеет

Artur Karapetov
по поводу оверхеда не согласен точно. в остальном...

А с чем связан оверхед? Вот у нас есть api, которое всегда отвечает 200, а в теле всегда есть поле status. Если ошибок нет, там 0. Если ошибка есть, то ещё поля message(где подробно описана причина ошибки) и debug(где лежит исходный запрос). В swagger описаны эти status, message, debug как отдельная сущность, которая подмешана через AllOf во все ответы api.

Artur-Karapetov Автор вопроса
Roman Timofeev
А с чем связан оверхед? Вот у нас есть api, которо...

оверхед связан с тем что: 1. надо дублировать транспортную информацию (статус код, дополнительную интерпретацию ошибки) 2. нельзя положиться на транспорт (так как транспорт может быть разным) и использовать его готовую логику как часть своей 3. как вы в свагере опишите вызов сервиса через amqp? вроде все

Artur Karapetov
оверхед связан с тем что: 1. надо дублировать тран...

1. Если в транспорт не транслировать ошибки, то и дублировать не надо :) 2. Не надо паразитировать на статусах транспорта. У него свои ошибки, у нас - свои. 3. Никак. Swagger для этого не предназначен. Вообще, цирк начинается когда вам прилетает 30x код в ответ на ваш метод.

Похожие вопросы

Обсуждают сегодня

@Aiwan что такое база образца?
Alexey
27
Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
Хотя у меня сейчас есть более сложная задача, вот её думаю: как объяснить челу переходного возраста противоположного полу, обучающегося в польском колледже (а-ля наш техникум)...
Вячеслав Кузьменко
15
а сколько всего в IT умерло? Где флеш-игры, их было туча, где они все? Сегодня технология есть, а завтра вжух и мёртвая. Этот wasm сильно напоминает джавовские апплеты, silver...
Constantin F.
5
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
30
а вы в курсе, что Initialize() не работает? var arr123: array[0..123] of Byte; ... Initialize(arr123, SizeOf(arr123));
Iluha Companets
8
что читать по делфи?вообще 0 в нем
fd dsds
9
верно что я могу удалить эти addq и subq т.к. со стеком никакого взаимодействия нет (исключая call)?
Michael
16
Карта сайта