Size: a a a

Saint P Ruby Community

2020 September 22

m

max in Saint P Ruby Community
Alexander G
а какие могут быть трудозатраты? я не очень понимаю, чем код вроде (грубо)

apiCall(onSuccess,  onError)


лучше, чем

apiCall(onResponse)

onResponse {
 if success {
  ...
 else
   ...
 }
}
это вы сильно высокоуровневую абстрацию взяли
спуститесь ниже, до
$.ajax(endpoint_url).then(OnSuccess).catch(OnError)

$.ajax(endpoint_url).then(OnResponse).catch(OnServerError)
источник

m

max in Saint P Ruby Community
Alexander G
а почему тело при 200 видно, а при 400 нет?
да видно тело
но если всегда ориентироваться на тело ответа (что я и предлагаю), то зачем вообще проверять status code?
оставьте status code для ошибок веб-сервера. а ошибки приложения в теле ответа
источник

AG

Alexander G in Saint P Ruby Community
max
да видно тело
но если всегда ориентироваться на тело ответа (что я и предлагаю), то зачем вообще проверять status code?
оставьте status code для ошибок веб-сервера. а ошибки приложения в теле ответа
Вопрос был относительно траблшутинга. Почему при 404 от одного из серверов не видно тело ответа и не понятно сразу, что лажа приходит?
источник

m

max in Saint P Ruby Community
в том конкретном примере нигде не было тела при 404
было $.ajax(url, onError: function() { $errorDiv.innerText = 'Мы не смогли загрузить список =(' })
источник

AG

Alexander G in Saint P Ruby Community
а как выглядел onSuccess?
источник

AG

Alexander G in Saint P Ruby Community
т.е. если бы в onSuccess пришел бы дефолтный html от nginx, как бы это заметили?
источник

AG

Alexander G in Saint P Ruby Community
там же была бы ошибка парсинга json-а на клиенте
источник

m

max in Saint P Ruby Community
да
источник

AG

Alexander G in Saint P Ruby Community
и как бы ее увидели?
источник

m

max in Saint P Ruby Community
хз, упало бы все наверное)
по ошибкам в консоли dev tools
источник

AG

Alexander G in Saint P Ruby Community
я так понимаю, что тут только 2 варианта:
1. открыть консоль и увидеть глазами
2. получить в error-мониторинге (rollbar, sentry, etc)

Эти 2 способа одинаково сработают и с 404
источник

DS

Dmitriy Strukov in Saint P Ruby Community
душненько
источник

AG

Alexander G in Saint P Ruby Community
разве что в консоли не будет ошибки парсинга с 404
источник

AG

Alexander G in Saint P Ruby Community
Dmitriy Strukov
душненько
это что-то из вастриковской терминологии )
источник

DS

Dmitriy Strukov in Saint P Ruby Community
Alexander G
это что-то из вастриковской терминологии )
олды тут
источник

DS

Dmitriy Strukov in Saint P Ruby Community
источник

m

max in Saint P Ruby Community
да, только когда получаем 404 и по контракту тело всегда пустое
то не понятно это ошибка веб-сервера, или ошибка приложения
источник

DS

Dmitriy Strukov in Saint P Ruby Community
теперь я понял чем джун от сеньора отличается 😁
источник

AG

Alexander G in Saint P Ruby Community
max
да, только когда получаем 404 и по контракту тело всегда пустое
то не понятно это ошибка веб-сервера, или ошибка приложения
ну это от контракта зависит. Обычно в ошибках приложения при 4хх тело не пустое и содежит валидный json(xml, whatever)
источник

m

max in Saint P Ruby Community
так если тело всегда содержит валидный json, то зачем смотреть на статус?
получается что и в OnSuccess и в OnError будет один и тот же код (пусть и DRY) по парсингу тела ответа
источник