Angular 9 - запрос GET анализирует строку на неправильное значение - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь отправить простую строку как параметр запроса с запросом GET в Angular 9. Строка содержит специальные символы, такие как +

, например,

  getString(stringParam: string): Observable<boolean> {
    console.log('api param', stringParam);
    let params = new HttpParams();
    params = params.set('stringParam', stringParam);
    return this.http.get<boolean>(`${URL}/param`, { params });
  }

журнал консоли показывает мне PL + QP / 2 , но параметр запроса отправляется как PL QP / 2 в заголовках.

Так что по какой-то причине он отбрасывает + (и возможно, некоторые другие символы также не подтверждены) И я понятия не имею, почему, у кого-то есть зацепка по этому поводу? Я попытался поиграть с кодировкой URI, но у меня ничего не вышло.

Заранее спасибо.

1 Ответ

0 голосов
/ 06 августа 2020

Вы можете включить символ + путем процентного кодирования его с помощью encodeUriComponent(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

Символ + является зарезервированным символом и часто используется для заменить пробелы в URL-адресе: https://en.wikipedia.org/wiki/Percent-encoding

Вот пример сравнения двух: https://stackblitz.com/edit/kbs-so-ng-reserved-character-url?file=src / app / app.component.ts

Отладка этого символа может быть сложной задачей, потому что после удаления некоторые браузеры будут отображать пробел в виде символа +, заставляя вас поверить, что он присутствует, когда это не в вашем случае.

...