LINUX.ORG.RU

как обработать ответ сервера со статусом 400?

 , ,


1

1

у меня вопрос по angularJS. в нём очень мало конкретики, но меня устроит телепатический ответ

использую сервис $http для отправки запроса на сервер. CORS налажен. если я отправляю нужные серверу ….some.data…, то сервер возвращает статс 200 и выполнение переходит в block 1.

проблема в том, что если я отправляю неправильные ….some.data…, то сервер возвращает статус 400 и выполнение вообще не переходит ни в один из указанных блоков

есть ли способ этого избежать? мне нужно сделать так что, если я отправляю неправильные ….some.data…, то ошибка отлавливалась бы каким-нибудь блоком

$http.post(API_URL + 'auth/logpass/login', { ....some.data... }).
then(function success(response) {
  console.log('block 0')
  if (response.status === 200) {
    console.log('block 1')
  } else {
    console.log('block 2')
  }
},
function(response) {
  console.log('block 3')
})
.catch(function(response) {
  console.log('block 4')
})
.finally(function() {
  console.log('block 5')
});

А в чем проблема?

  if (response.status === 200) {
    console.log('block 1')
  } else if (response.status === 400) {
    console.log('bad data sent')
  } else {
    console.log('block 2')
  }

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

знать бы в чём проблема… мистика какая-то

ваш код от моего ничем не отличается, но я его попробовал. результат тот же самый - сервер прислал 400 код ошибки и ни один console.log не вывелся

prozaik
() автор топика

А всё потому, что безграмотные ангуляторы не учат матчасть и сразу лезут говнокодить свои велосипеды.
А то, что при 4** и 5** срабатывает fallback, а не callback, они и не догадываются.
Они даже не знают о том что он есть.
Потому что они ни разу не задумывались о том, как вообще работает асинхронный запрос.

Goury ★★★★★
()
Последнее исправление: Goury (всего исправлений: 2)

и почему меня не удивляет что на аве тупой мент?

anonymous
()
Ответ на: комментарий от Goury

Ну надо же, ангуляропромис просто повисает в воздухе без ресолва/режекта, или сообщения об unhandled fallback, а виноват в этом не дизайнер ангуляра, а тс. И причем тут асинхронность запроса, для красного словца?

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

anonymous
()

then(function success(response)

Именованная анонимная функция?

Все работает как задумано, ангуляр 1.7.5:

  • 200 — блоки 0, 1, 5
  • 405 — блоки 3, 5
Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

да. оказалось, проблема была в interceptor

prozaik
() автор топика
Ответ на: комментарий от anonymous

Я, может быть, тупой, но вообще не понял, что он там упарывает. Чо за фоллбек, куда фоллбек, причём там асихрон ваще? Пятница, вечер, прибухнул и разбушевался, похоже.

WitcherGeralt ★★
()
28 июня 2020 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.