Size: a a a

BY Microsoft .NET User Group

2019 October 02

AP

Arciom Prudnikaŭ in BY Microsoft .NET User Group
Andrew Khmylov
Вообще все уже делают 200 OK и { "success": false } в теле ответа
я бы за такое кочергой по голове
источник

AK

Andrew Khmylov in BY Microsoft .NET User Group
Остаётся только придумать чем тип application ошибки, натянутый на HTTP-статусы, лучше чем доменно-специфичное кодирование в теле ответа :)
источник

A

Andre in BY Microsoft .NET User Group
Если код завязан на бизнес логику, например 401, 403, то понятно это надо обработать
источник

AP

Arciom Prudnikaŭ in BY Microsoft .NET User Group
Andrew Khmylov
Остаётся только придумать чем тип application ошибки, натянутый на HTTP-статусы, лучше чем доменно-специфичное кодирование в теле ответа :)
200
{"success" : false, "reason" : "NotFound" }
вот это точно классно, ага
и пофиг что есть всем понятное чёткое 404
источник

AP

Arciom Prudnikaŭ in BY Microsoft .NET User Group
к тому же никто не в боди не запрещает уточнить, что конкретно случилось
источник

AP

Arciom Prudnikaŭ in BY Microsoft .NET User Group
а то можно ваще дойти до того, что даже урлы разные не нужны, можно всё в один урл совать постом, а там уже описывать операцию, которую ты хочешь) эдакий REST over RPC)
источник

A

Andre in BY Microsoft .NET User Group
Дошли уже, graphQL 😊
источник

AP

Arciom Prudnikaŭ in BY Microsoft .NET User Group
Andre
Дошли уже, graphQL 😊
кто-нибудь ваще его в продакшене видел?)
источник

A

Anatoly in BY Microsoft .NET User Group
Arciom Prudnikaŭ
кто-нибудь ваще его в продакшене видел?)
Да, много кто
источник

AP

Arciom Prudnikaŭ in BY Microsoft .NET User Group
Anatoly
Да, много кто
интересно было бы послушать годную саксес стори, а то пока что всё, что я слышал, сводилось к превозмоганию
скорее всего оттого, что его суют не туда, куда нужно. Т.е. обычная причина превозмогания)
источник

AK

Andrew Khmylov in BY Microsoft .NET User Group
Это всё вопрос привычки, просто лет 10 назад чуваки очень сильно угорали по догматичному ресту, и с тех пор укоренилась такая привычка. Вся семантика лишь в головах, объективно разные HTTP статусы и один с инфой в теле не лучше и не хуже друг друга
источник

RY

Ruslan Yakauleu in BY Microsoft .NET User Group
Запрашивать объекты через SignalR. Для тех кто ещё не умеет сокеты сделать один эндпоинт в который в параметрах урла будет передаваться чего надо и на какой емейл отправлять. Типа это ж не проблема бэкенда, фронтендеры пусть сами разруливают
источник

AK

Andrew Khmylov in BY Microsoft .NET User Group
Arciom Prudnikaŭ
а то можно ваще дойти до того, что даже урлы разные не нужны, можно всё в один урл совать постом, а там уже описывать операцию, которую ты хочешь) эдакий REST over RPC)
Как будто что-то плохое 😃
источник

AP

Arciom Prudnikaŭ in BY Microsoft .NET User Group
Andrew Khmylov
Это всё вопрос привычки, просто лет 10 назад чуваки очень сильно угорали по догматичному ресту, и с тех пор укоренилась такая привычка. Вся семантика лишь в головах, объективно разные HTTP статусы и один с инфой в теле не лучше и не хуже друг друга
тут главное в крайности не впадать
я всё же за коды и уточнения
источник

AP

Arciom Prudnikaŭ in BY Microsoft .NET User Group
Andrew Khmylov
Как будто что-то плохое 😃
а мсье знает толк)
источник

A

Andre in BY Microsoft .NET User Group
Ну тут как обычно золотая середина, либо делаешь сложный запрос и получаешь сразу, либо много запросов и потом мапинг зависимых сущностей на фронте
источник

AP

Arciom Prudnikaŭ in BY Microsoft .NET User Group
Andre
Ну тут как обычно золотая середина, либо делаешь сложный запрос и получаешь сразу, либо много запросов и потом мапинг зависимых сущностей на фронте
но мы то знаем, что фронтенд - для слабаков, у которых нет curl'а)
источник

RY

Ruslan Yakauleu in BY Microsoft .NET User Group
Andrew Khmylov
Это всё вопрос привычки, просто лет 10 назад чуваки очень сильно угорали по догматичному ресту, и с тех пор укоренилась такая привычка. Вся семантика лишь в головах, объективно разные HTTP статусы и один с инфой в теле не лучше и не хуже друг друга
Объективно костылить вручную обработку к тому, половину из чего нормальный клиент сам корректно обработает если передать всё корректно - это дичь. А что будет когда помимо ожидаемой тушки сервер начнёт возвращать всякое неожиданное типа 301 на туда же но с HTTPS, 500 без ожидаемой тушки (просто потому что бывает), всякие левые коды с редиректами которые например тот же МТС любит втыкать если у тебя например трафик кончился, 502 - всё хорошо у тебя, просто балансировщик здох... эту балалайку можно прям дофига тянуть
источник

RY

Ruslan Yakauleu in BY Microsoft .NET User Group
отдельно круто было бы увидеть саксесс стори как такое апи в кровавом серьёзном энтерпрайзе описывают через какой-нибудь сваггер, чтобы прям и спеки из кода, и тесты легко натягивались и автогенерация клиента по спекам
источник

AK

Andrew Khmylov in BY Microsoft .NET User Group
Ruslan Yakauleu
Объективно костылить вручную обработку к тому, половину из чего нормальный клиент сам корректно обработает если передать всё корректно - это дичь. А что будет когда помимо ожидаемой тушки сервер начнёт возвращать всякое неожиданное типа 301 на туда же но с HTTPS, 500 без ожидаемой тушки (просто потому что бывает), всякие левые коды с редиректами которые например тот же МТС любит втыкать если у тебя например трафик кончился, 502 - всё хорошо у тебя, просто балансировщик здох... эту балалайку можно прям дофига тянуть
Со статус кодами такое же костылирование, потому что в случае неуспешного кода надо попробовать разобрать его тело, чтобы достать какую-то вменяемую инфу об ошибке для пользователя, и тут уже не столь понятно - 404 у тебя потому что неправильно сконфигурирован адрес запроса или потому что пользователь запросил несуществующую сущность в системе. 400 потому что пользователь ввёл неправильные данные и отвалился по валидации или потому что клиентский код неправильно составил запрос или кто-то на бэкенде обновил апишку не подумав об обратной совместимости.
источник