Как передать переменную / параметр (который включает косую черту) в http post-запросе в Angular?

#angular #angular-httpclient

#angular #angular-httpclient

Вопрос:

Я передаю переменную или параметр в URL-адресе во время http-запроса put в angular, и переменная, которую я передаю, находится в форме (x / y). При передаче такого рода переменной URL, на который я ориентируюсь, не попадает из-за формы this variable (x / y). Я думаю, потому что URL меняется, когда я передаю такую переменную. вкратце,

URL, на который я хочу отправить запрос put http://localhost:5000/api/Transmission/{variable}/deleteDashboardAlert

НО URL, на который отправляется этот запрос http://localhost:5000/api/Transmission/x/y/deleteDashboardAlert

Ниже приведена функция, которую я вызываю и передаю аргументы ->

 deleteAlert(transmissionId, alertTypeId, description) {
 return this.http .put(
  `transmission/${transmissionId}/${alertTypeId}/${description}/deleteDashboardAlert`,
  {}
 );
}
  

Итак, в основном в вышеупомянутой функции переменная description создает эту проблему

Комментарии:

1. Вы хотите получить доступ к конечной точке API, в которой есть динамическое значение? т.е. ../api/Transmission/123/deleteDashboardAlert ? правильно?

2. Пожалуйста, опубликуйте код, с помощью которого вы формируете URL-адрес

3. @KamranKhatti Да, это верно !

4. 👋 привет, не могли бы вы поделиться своим сервисным кодом, как вы передаете данные, и кодом, связанным с отправкой данных?

5. @AG_24 Я отправил решение, проверьте мой ответ

Ответ №1:

вы можете использовать encodeURIComponent для кодирования variable значений

 deleteAlert(transmissionId, alertTypeId, description) {
 const variable = encodeURIComponent(`${transmissionId}/${alertTypeId}/${description}`);
 return this.http.put(`transmission/${variable}/deleteDashboardAlert`, {});
}
  

Комментарии:

1. Большое спасибо за ваше предложение. Метод encodeURIComponent сработал!

2. Я очень рад ей, что 🙂🙂

Ответ №2:

Вы можете добавить любое динамическое значение в вашей конечной точке, как показано ниже.

demo.service.ts

Отредактировано: добавлено encodeURIComponent для кодирования переданного параметра.

 @Injectable({
  providedIn: 'root'
 })
 export class DemoService {
    baseUrl = 'http://localhost:5000';
    constructor(private http: HttpClient) {}

   getDemoData(someValue) {
     const endcodedValue = encodeURIComponent(someValue);
     const url = `${this.baseUrl}/api/Transmission/${endcodedValue}/deleteDashboardAlert`;
     return this.http.get(url);
   }

   getAnOtherDemoData(someValue1, someValue2 ) {
     const endcodedValue = encodeURIComponent(`${someValue1}/${someValue2}`);
     const url = `${this.baseUrl}/api/Transmission/${endcodedValue}/deleteDashboardAlert`;
     return this.http.get(url);
   }
 }
  

Комментарии:

1. Я не верю, что это решит проблему. Параметр или переменная, которые мы передаем и которые содержат косую черту, должны быть отправлены вместе.

2. Я думаю, что encodeURIComponent решит проблему, но я ее не тестирую 😅😅

3. @AG_24 Я обновил свой ответ, надеюсь, это сработает для вас.

4. @KamranKhatti какой смысл копировать мой ответ 😨😨😨