powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
25 сообщений из 370, страница 2 из 15
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39710994
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreИ я еще не нашел у них в доке пример того, как обрабатываются ошибки 401/403. Могу предположить, что это у них может быть обернуто в бизнес ошибку. Есть некая ошибка "no_token (no_domain, no_ip ) — не передан обязательный параметр." но это речь об обязательных параметрах.А зачем Вам как у них? Как надо Вам?
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711005
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreМоя задача предоставить удобный API.
Всё что можно обработать и вернуть адекватный ситуации Http code, то обрабатывайте.

WaspNewCoreПример запроса:
Код: c#
1.
2.
HttpGet
api/customers/7

Если есть такой кастомер, то 200, если нет, то 404 Not found.
Если пользователь не имеет права на получение данной информации, то 403 Forbidden.
Если api/customers/asda##$Vfg"DROP DATABASE" , то 400 Bad request.
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711083
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WaspNewCore,

Я использую договоренность с нашими "бэкэндирами" - если не ошибка сервера (не 500), то всегда возвращают 200, а результате отправляю OperationResult, где есть Т - результат, Exception, + метадата...
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711097
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Calabongaесли не ошибка сервера (не 500), то всегда возвращают 200
т.е. вы все ошибки ниже заменили на 200?
авторWeb Server Status Codes And Messages

The Status-Code element is a 3-digit integer result code of the attempt to understand and satisfy the request. These codes are defined below. The Status Message is intended to give a short textual description of the Status-Code.

1xx: Informational - Request received, continuing process

2xx: Success - The action was successfully received, understood, and accepted

3xx: Redirection - Further action must be taken in order to complete the request

4xx: Client Error - The request contains bad syntax or cannot be fulfilled

5xx: Server Error - The server failed to fulfill an apparently valid request
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711098
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Calabonga,

Забыл ссылку вставить OperationResult
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711099
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Calabonga,
не особо вижу смысла, но если "договорились", то и океюшки)
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711103
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Calabonga OperationResult
авторЗаказ добавлен в корзину.
Презервативы закончились на складе.
В корзине уже есть такой товар.
Нет ответа. Ошибка сервиса или сервис не доступен.

смешивание бизнес логики и системной по протоколу
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711376
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCore"И вот тут кстати еще вопрос. Ошибка 404 (NotFound) применима к Web Api ?
Этот код стоит возвращать исключительно, если не найден некий url, или еще и в ситуации, если не найден искомый Юзер/Документ ?"

да, применима, и именно так и надо делать. А бизнес ошибки лежат в немного другой плоскости, если надо обьяснить причину почему возвращен код 400 или 404, то ничто вам не мешает добавить json боди где описать все что требуется
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711405
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreИ вот мне самому интересно. Как вообще сочетать Http коды ошибок, с некими внутренними кодами ошибок (те же коды 500 или 401).

Ваша проблема здесь.

Вы не можете отделить нормальную работу приложения от ошибок приложения.
Из-за того, что используется в обоих случаях термин "ошибка", вы начинаете путать коды ошибок HTTP с нормальным ответом приложения сервера клиенту.

Яндекс в приведённом вами примере не отказался от этого. Есть внутренняя логика, когда у них в теле ответа success: false, это не ошибка в понимании HTTP и работы приложения. Это ответ логики.

Представим себе онлайн калькулятор. Отправляем два числа, получаем результат деления. Если отправим, допустим, 1 и 0, то по-вашему что должно вернуться? Код ошибки 500? Сервер упал, когда пытался разделить на ноль? Ответ очевиден. (нет конечно же!!)

Насчёт 404. Если вы делаете запрос типа GET: /api/documents/4
А документа с id=4 нет, то вы возвращаете 404, потому что это ошибка именно HTTP такого класса.
Это не 200 OK с телом, в котором написано, что документа 4 нет.
Почему?
Потому что речь идёт об URL, такого URL действительно нет, и с точки зрения HTTP монопенисуально почему (документа нет, это пофигу чего там нет).

Разберитесь с терминологией. Тогда всё станет очевидно и понятно.
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711428
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CalabongaWaspNewCore,

Я использую договоренность с нашими "бэкэндирами" - если не ошибка сервера (не 500), то всегда возвращают 200, а результате отправляю OperationResult, где есть Т - результат, Exception, + метадата...
И как вы это дело мониторите? Какой процент реальных 200, а какой ошибок, завернутых в 200?
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711502
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Некоторые путают RPC и REST и можно увидеть смешение, это результат того, что как в голове.
Отсюда ошибки, завёрнутые в 200 и проблемы с мониторингом.
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711503
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttэто результат того, что как в голове.

*каша в голове
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711549
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНасчёт 404. Если вы делаете запрос типа GET: /api/documents/4
А документа с id=4 нет, то вы возвращаете 404, потому что это ошибка именно HTTP такого класса

а почему не 204 (204 No Content - "сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения")?
ведь есть разница
GET: /api/documents/4 (такой url есть, он обрабатывается логикой приложения)
и
GET: /api/d a cuments/4 (а такого url нет вообще)
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711559
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachGET: /api/documents/4 (такой url есть, он обрабатывается логикой приложения)
и
GET: /api/d a cuments/4 (а такого url нет вообще)

с точки зрения HTTP нет разницы, это нужно понимать.

что опечатка, что неправильный идентификатор -- это 404, по многим причинам
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39711645
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachа почему не 204 (204 No Content - "сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения")?

да, самый яркий пример, Heartbeat
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39712117
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если посмотри к примеру описания ошибок по этой ссылке, то можно понять, что статус ошибки имеет прямое отношение к бизнес логике приложения.

Common REST API Error Codes
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39712178
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Calabonga OperationResult
авторЗаказ добавлен в корзину.
Презервативы закончились на складе.
В корзине уже есть такой товар.
Нет ответа. Ошибка сервиса или сервис не доступен.

смешивание бизнес логики и системной по протоколу

Никакого смешивания при моём подходет - нет! Объясню ниже и по пунктам. А что касается выдачи системых ошибок "наружу" - это еще тот вопрос. Более того, наоборот, загружать пользователя ошибками и бизнес-логики, и системы, в принципе не имеет смысла! Информация о системных ошибках (например, 500) никоим образом не сделают счастливым их получателей. Поэтому я и не смешиваю ошибки протокола HTTP и бизнес-логики. То есть если сервис работает - всегда 200, а если нет, то это уже другая история и тут OperationResult не поможет. И опять же, для ошибок бизнес-логики при использовании OpertionResult (или любой другой "обертки") у меня есть возможность более информативно описать случай бизнес-логики на сервере.

Теперь про "смешивание"
Ну, во-первых. В том-то и дело, что ошибки системы для конечного пользователя не нужны (я говорю например про SPA), а ошибки "user friendly" - это работает "на УРА". Мы их просто "пробрасываем" до пользователя исключая бизнес-логику по их обработке на стороне клиента.

Во-вторых, когда случается "Ошибка сервиса или сервис не доступен.", тогда OperationResult не может быть результатом ответа по опледелению. То есть при таких ошибках OpertionResult не работает. :)

В-третьих, если API работает для внешних сайтов (сторонние пользователи API, не наш GUI), то для них просто в свойство Exception у OperationResult "идут/не идут" (путём включения "галки" в настройках) системные ошибки, вернее сказать, не "системые", а "ошибки более низкого уровня".

В-четвертых, при использовании OperationResult написание unit-тестов для меня существенно упрощается.

В любом случае, данная практика отточена на протяжении более 10 лет использования.
И, кстати, OperationResult позволяет максимально близко реализовать принципы описанные здесь
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39712260
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CalabongaPetro123пропущено...

пропущено...

смешивание бизнес логики и системной по протоколу

Никакого смешивания при моём подходет - нет! Объясню ниже и по пунктам. А что касается выдачи системых ошибок "наружу" - это еще тот вопрос. Более того, наоборот, загружать пользователя ошибками и бизнес-логики, и системы, в принципе не имеет смысла! Информация о системных ошибках (например, 500) никоим образом не сделают счастливым их получателей. Поэтому я и не смешиваю ошибки протокола HTTP и бизнес-логики. То есть если сервис работает - всегда 200, а если нет, то это уже другая история и тут OperationResult не поможет. И опять же, для ошибок бизнес-логики при использовании OpertionResult (или любой другой "обертки") у меня есть возможность более информативно описать случай бизнес-логики на сервере.

Теперь про "смешивание"
Ну, во-первых. В том-то и дело, что ошибки системы для конечного пользователя не нужны (я говорю например про SPA), а ошибки "user friendly" - это работает "на УРА". Мы их просто "пробрасываем" до пользователя исключая бизнес-логику по их обработке на стороне клиента.

Во-вторых, когда случается "Ошибка сервиса или сервис не доступен.", тогда OperationResult не может быть результатом ответа по опледелению. То есть при таких ошибках OpertionResult не работает. :)

В-третьих, если API работает для внешних сайтов (сторонние пользователи API, не наш GUI), то для них просто в свойство Exception у OperationResult "идут/не идут" (путём включения "галки" в настройках) системные ошибки, вернее сказать, не "системые", а "ошибки более низкого уровня".

В-четвертых, при использовании OperationResult написание unit-тестов для меня существенно упрощается.

В любом случае, данная практика отточена на протяжении более 10 лет использования.
И, кстати, OperationResult позволяет максимально близко реализовать принципы описанные здесь
Так и в чём профит-то, кроме тестов?
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39712280
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Calabonga,

Мне кажется оборачивать всё OperationResult, это попытка изобрести очередной велосипед, скрестив идеи RPC и REST в некоего монстра, который не дружит ни с кем и ни с чем.

В общем, в одном доставшемся нам проекте мы выпиливали "гениальные" обёртки всего и вся в 200.
Потому что страдали все.

Строго не рекомендую подобный подход.
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39712281
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CalabongaВ-четвертых, при использовании OperationResult написание unit-тестов для меня существенно упрощается.

Здесь вообще непонятно, в чём упрощение.
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39712302
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оо вставлю свои 5 копеек.
у нас на работе как раз такой батл периодически делается. люди по разному обработку делают так как команды разные и мало контактируют. я делает со статусами http по многим причинам. к примеру на js я в отдельном блоке отловлю эту ситуацию, в коде c# у меня вылетит ошибка и я пойму что пошло что то не так. когда же оборачивают в OperationResult то мне надо предугадывать(не помню название стороних сервисов - там подменяли на 200 ответ возвращаемую сущность без всяких флагов) или проверять поле флаг все ок ли.
Вообщем механизм статусов http имхо эт как прокидывание ошибок из кишок библы ест и надо использовать а не тупо проглатывать.
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39712328
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuВообщем механизм статусов http имхо эт как прокидывание ошибок из кишок библы ест и надо использовать а не тупо проглатывать.
А можешь перефразировать? Не понятно.
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39712346
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонЕсли посмотри к примеру описания ошибок по этой ссылке, то можно понять, что статус ошибки имеет прямое отношение к бизнес логике приложения.

Common REST API Error Codes что то там намешано на одну ошибку кучу всего.
Не понял как это практически все использовать.
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39712353
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, handmadeFromRu, +1,
А оборачивание кода ошибки в ResultXX... уже обсуждали в отдельной теме.
...
Рейтинг: 0 / 0
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
    #39712360
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttCalabonga,

Мне кажется оборачивать всё OperationResult, это попытка изобрести очередной велосипед, скрестив идеи RPC и REST в некоего монстра, который не дружит ни с кем и ни с чем.

В общем, в одном доставшемся нам проекте мы выпиливали "гениальные" обёртки всего и вся в 200.
Потому что страдали все.

Строго не рекомендую подобный подход.

Тяжело судить, что и почему вы там выпиливали, но могу со всей ответственностью заявить, что никогда не было проблем! Только профит! И на UI и на Backend.
...
Рейтинг: 0 / 0
25 сообщений из 370, страница 2 из 15
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]