Обработка ошибок углового перехватчика. Проблема с методом добавления и удаления

Я показываю предупреждение на основе HTTP-ответа, возвращенного в Angular. Мой код работает с методами Get и Post, но не с методами put и delete. Я застрял здесь и был бы очень рад, если бы кто-нибудь мог мне помочь. ApiUrl.ts => экспортировать const AlertUrls: string[] = [ // URL-адреса серверной службы]

мой-перехватчик.ts => импорт { AlertUrls, коллекция } из "../ApiUrl";

  return next.handle(req).pipe(
    map((response: any) => {
        if ( AlertUrls.includes(req.url) && req.method !=='GET' && response instanceof HttpResponse && response.status === 200) {
          this.alertService.showSuccessAlert();
        }
    return response;
  }),

поставьте отладчик на условие if и проверьте его вручную! одно из условий if оценивается как ложное и должно быть выполнено вами!

Naren Murali 03.05.2024 13:26

@NarenMurali На самом деле, когда отладчик открыт, пока работает метод post, рядом со следующим значением => map((ответ: любой) => { response = HttpResponse { header: HttpHeaders, status: 200, statusText: 'OK' , url: '(url внутренней службы)', ok: true, ...} Появляется такая строка, и когда я продолжаю работу отладчика, та же строка появляется рядом с этим кодом: ответ экземпляра HttpResponse &&.

Kadir Ersezer 03.05.2024 13:51

@NarenMurali Однако, когда отладчик включен и запущены методы put и delete, рядом со значением здесь выводится карта((ответ: любой) => выводится строка выше. Экземпляр ответа HttpResponse && не записывает никакого кода дальше к значению здесь. Как вы думаете, проблема может быть связана с этим?

Kadir Ersezer 03.05.2024 13:51

вы можете просто console.info(AlertUrls.includes(req.url), req.method !=='GET', response instanceof HttpResponse, response.status === 200) проверить все отдельные условия, если отладчик вызывает у вас проблемы!

Naren Murali 03.05.2024 14:03

@NarenMurali URL-адрес не полностью совпадает с нашим URL-адресом удаления из-за нашего идентификатора элемента удаления. Так что это не входит в условие if. На самом деле это проблема, но я все еще не понимаю, как я могу решить эту проблему.

Kadir Ersezer 03.05.2024 14:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Несовпадение URL-адреса — это проблема, с которой вы столкнулись. Вы можете просто использовать свойство string, включает, чтобы проверить, присутствует ли строка внутри URL-адреса, вместо полной проверки на равенство!

AlertUrl: /delete

будет соответствовать

Полный URL: /delete/123uuh4u23424

  return next.handle(req).pipe(
    map((response: any) => {
        if (AlertUrls.find((url: any) => req.url.includes(url)) && req.method !=='GET' && response instanceof HttpResponse && response.status === 200) {
          this.alertService.showSuccessAlert();
        }
    return response;
  }),

Я решил так. return next.handle(req).pipe( карта((ответ: любой) => { console.info(AlertUrls) console.info(req.url) let cloneReq = req.url; let reqSplit = req.url.split( '='); console.info(reqSplit) if (reqSplit.length>1){ cloneReq = reqSplit[0] + " = " ; } if ( AlertUrls.includes(cloneReq) && экземпляр ответа HttpResponse && response.status == = 200) { this.alertService.showSuccessAlert() } возвращаем ответ });

Kadir Ersezer 03.05.2024 15:10

Но ваш метод тоже сработал. Я попробовал несколько минут назад. Так что большое вам спасибо. Специально для вашей идеи отладчика. Потому что именно так я смог обнаружить проблему. Еще раз спасибо ^^

Kadir Ersezer 03.05.2024 15:13

Другие вопросы по теме