|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
WaspNewCoreИ я еще не нашел у них в доке пример того, как обрабатываются ошибки 401/403. Могу предположить, что это у них может быть обернуто в бизнес ошибку. Есть некая ошибка "no_token (no_domain, no_ip ) — не передан обязательный параметр." но это речь об обязательных параметрах.А зачем Вам как у них? Как надо Вам? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 15:40 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
WaspNewCoreМоя задача предоставить удобный API. Всё что можно обработать и вернуть адекватный ситуации Http code, то обрабатывайте. WaspNewCoreПример запроса: Код: c# 1. 2.
Если есть такой кастомер, то 200, если нет, то 404 Not found. Если пользователь не имеет права на получение данной информации, то 403 Forbidden. Если api/customers/asda##$Vfg"DROP DATABASE" , то 400 Bad request. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 15:44 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
WaspNewCore, Я использую договоренность с нашими "бэкэндирами" - если не ошибка сервера (не 500), то всегда возвращают 200, а результате отправляю OperationResult, где есть Т - результат, Exception, + метадата... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 16:52 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 17:16 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 17:18 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
Calabonga, не особо вижу смысла, но если "договорились", то и океюшки) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 17:18 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
Calabonga OperationResult авторЗаказ добавлен в корзину. Презервативы закончились на складе. В корзине уже есть такой товар. Нет ответа. Ошибка сервиса или сервис не доступен. смешивание бизнес логики и системной по протоколу ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 17:22 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
WaspNewCore"И вот тут кстати еще вопрос. Ошибка 404 (NotFound) применима к Web Api ? Этот код стоит возвращать исключительно, если не найден некий url, или еще и в ситуации, если не найден искомый Юзер/Документ ?" да, применима, и именно так и надо делать. А бизнес ошибки лежат в немного другой плоскости, если надо обьяснить причину почему возвращен код 400 или 404, то ничто вам не мешает добавить json боди где описать все что требуется ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 02:26 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
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 монопенисуально почему (документа нет, это пофигу чего там нет). Разберитесь с терминологией. Тогда всё станет очевидно и понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 07:39 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
CalabongaWaspNewCore, Я использую договоренность с нашими "бэкэндирами" - если не ошибка сервера (не 500), то всегда возвращают 200, а результате отправляю OperationResult, где есть Т - результат, Exception, + метадата... И как вы это дело мониторите? Какой процент реальных 200, а какой ошибок, завернутых в 200? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 08:45 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
skyANA, Некоторые путают RPC и REST и можно увидеть смешение, это результат того, что как в голове. Отсюда ошибки, завёрнутые в 200 и проблемы с мониторингом. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 10:41 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
hVosttэто результат того, что как в голове. *каша в голове ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 10:41 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
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 нет вообще) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 11:51 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
love_bachGET: /api/documents/4 (такой url есть, он обрабатывается логикой приложения) и GET: /api/d a cuments/4 (а такого url нет вообще) с точки зрения HTTP нет разницы, это нужно понимать. что опечатка, что неправильный идентификатор -- это 404, по многим причинам ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 12:06 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
love_bachа почему не 204 (204 No Content - "сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения")? да, самый яркий пример, Heartbeat ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 13:41 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
Если посмотри к примеру описания ошибок по этой ссылке, то можно понять, что статус ошибки имеет прямое отношение к бизнес логике приложения. Common REST API Error Codes ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 22:19 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
Petro123Calabonga OperationResult авторЗаказ добавлен в корзину. Презервативы закончились на складе. В корзине уже есть такой товар. Нет ответа. Ошибка сервиса или сервис не доступен. смешивание бизнес логики и системной по протоколу Никакого смешивания при моём подходет - нет! Объясню ниже и по пунктам. А что касается выдачи системых ошибок "наружу" - это еще тот вопрос. Более того, наоборот, загружать пользователя ошибками и бизнес-логики, и системы, в принципе не имеет смысла! Информация о системных ошибках (например, 500) никоим образом не сделают счастливым их получателей. Поэтому я и не смешиваю ошибки протокола HTTP и бизнес-логики. То есть если сервис работает - всегда 200, а если нет, то это уже другая история и тут OperationResult не поможет. И опять же, для ошибок бизнес-логики при использовании OpertionResult (или любой другой "обертки") у меня есть возможность более информативно описать случай бизнес-логики на сервере. Теперь про "смешивание" Ну, во-первых. В том-то и дело, что ошибки системы для конечного пользователя не нужны (я говорю например про SPA), а ошибки "user friendly" - это работает "на УРА". Мы их просто "пробрасываем" до пользователя исключая бизнес-логику по их обработке на стороне клиента. Во-вторых, когда случается "Ошибка сервиса или сервис не доступен.", тогда OperationResult не может быть результатом ответа по опледелению. То есть при таких ошибках OpertionResult не работает. :) В-третьих, если API работает для внешних сайтов (сторонние пользователи API, не наш GUI), то для них просто в свойство Exception у OperationResult "идут/не идут" (путём включения "галки" в настройках) системные ошибки, вернее сказать, не "системые", а "ошибки более низкого уровня". В-четвертых, при использовании OperationResult написание unit-тестов для меня существенно упрощается. В любом случае, данная практика отточена на протяжении более 10 лет использования. И, кстати, OperationResult позволяет максимально близко реализовать принципы описанные здесь ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 04:00 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
CalabongaPetro123пропущено... пропущено... смешивание бизнес логики и системной по протоколу Никакого смешивания при моём подходет - нет! Объясню ниже и по пунктам. А что касается выдачи системых ошибок "наружу" - это еще тот вопрос. Более того, наоборот, загружать пользователя ошибками и бизнес-логики, и системы, в принципе не имеет смысла! Информация о системных ошибках (например, 500) никоим образом не сделают счастливым их получателей. Поэтому я и не смешиваю ошибки протокола HTTP и бизнес-логики. То есть если сервис работает - всегда 200, а если нет, то это уже другая история и тут OperationResult не поможет. И опять же, для ошибок бизнес-логики при использовании OpertionResult (или любой другой "обертки") у меня есть возможность более информативно описать случай бизнес-логики на сервере. Теперь про "смешивание" Ну, во-первых. В том-то и дело, что ошибки системы для конечного пользователя не нужны (я говорю например про SPA), а ошибки "user friendly" - это работает "на УРА". Мы их просто "пробрасываем" до пользователя исключая бизнес-логику по их обработке на стороне клиента. Во-вторых, когда случается "Ошибка сервиса или сервис не доступен.", тогда OperationResult не может быть результатом ответа по опледелению. То есть при таких ошибках OpertionResult не работает. :) В-третьих, если API работает для внешних сайтов (сторонние пользователи API, не наш GUI), то для них просто в свойство Exception у OperationResult "идут/не идут" (путём включения "галки" в настройках) системные ошибки, вернее сказать, не "системые", а "ошибки более низкого уровня". В-четвертых, при использовании OperationResult написание unit-тестов для меня существенно упрощается. В любом случае, данная практика отточена на протяжении более 10 лет использования. И, кстати, OperationResult позволяет максимально близко реализовать принципы описанные здесь Так и в чём профит-то, кроме тестов? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 10:01 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
Calabonga, Мне кажется оборачивать всё OperationResult, это попытка изобрести очередной велосипед, скрестив идеи RPC и REST в некоего монстра, который не дружит ни с кем и ни с чем. В общем, в одном доставшемся нам проекте мы выпиливали "гениальные" обёртки всего и вся в 200. Потому что страдали все. Строго не рекомендую подобный подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 10:42 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
CalabongaВ-четвертых, при использовании OperationResult написание unit-тестов для меня существенно упрощается. Здесь вообще непонятно, в чём упрощение. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 10:43 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
оо вставлю свои 5 копеек. у нас на работе как раз такой батл периодически делается. люди по разному обработку делают так как команды разные и мало контактируют. я делает со статусами http по многим причинам. к примеру на js я в отдельном блоке отловлю эту ситуацию, в коде c# у меня вылетит ошибка и я пойму что пошло что то не так. когда же оборачивают в OperationResult то мне надо предугадывать(не помню название стороних сервисов - там подменяли на 200 ответ возвращаемую сущность без всяких флагов) или проверять поле флаг все ок ли. Вообщем механизм статусов http имхо эт как прокидывание ошибок из кишок библы ест и надо использовать а не тупо проглатывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 11:11 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
handmadeFromRuВообщем механизм статусов http имхо эт как прокидывание ошибок из кишок библы ест и надо использовать а не тупо проглатывать. А можешь перефразировать? Не понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 11:51 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
ПарамонЕсли посмотри к примеру описания ошибок по этой ссылке, то можно понять, что статус ошибки имеет прямое отношение к бизнес логике приложения. Common REST API Error Codes что то там намешано на одну ошибку кучу всего. Не понял как это практически все использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 12:11 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
hVostt, handmadeFromRu, +1, А оборачивание кода ошибки в ResultXX... уже обсуждали в отдельной теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 12:15 |
|
Какой-то стандартный подход для возврата на клиент ошибок/сообщений об ошибках ?
|
|||
---|---|---|---|
#18+
hVosttCalabonga, Мне кажется оборачивать всё OperationResult, это попытка изобрести очередной велосипед, скрестив идеи RPC и REST в некоего монстра, который не дружит ни с кем и ни с чем. В общем, в одном доставшемся нам проекте мы выпиливали "гениальные" обёртки всего и вся в 200. Потому что страдали все. Строго не рекомендую подобный подход. Тяжело судить, что и почему вы там выпиливали, но могу со всей ответственностью заявить, что никогда не было проблем! Только профит! И на UI и на Backend. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 12:20 |
|
|
start [/forum/topic.php?fid=18&msg=39712360&tid=1355117]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 165ms |
0 / 0 |