Express парс запроса запроса со знаком "+" - PullRequest
0 голосов
/ 24 марта 2020

У меня есть сервер Express и в моих маршрутах я настроил:

app.use(express.urlencoded({ extended: false }));

Во внешнем интерфейсе я отправляю запрос с Angular:

let params = new HttpParams().set('info', info);
if (email) {
  params = params.set('email', encodeURIComponent(email));
}

let res;

try {
  res = await this.http.get(`/api/users`, { headers: header, params }).toPromise();
  return res._embedded.users;
} catch (err) {
  return false;
}

I Я получаю от внешнего интерфейса запрос GET с параметром запроса email=jhondoesd%2Btest%40trond.com Я ожидаю получить в моем обработчике маршрута query:{email:"jhondoesd+test@trond.com"}, но вместо этого я получаю query:{email:"jhondoesd%2Btest%40trond.com"}, поэтому кажется, что параметры запроса не декодируются. Что мне нужно настроить?

Ответы [ 2 ]

1 голос
/ 24 марта 2020

Вы используете URI, кодирующий электронную почту при отправке параметра.

Попробуйте удалить encodeURIComponent(email) из параметра электронной почты. Итак,

params = params.set('email', email);

должны сделать свое дело.

0 голосов
/ 25 марта 2020

Я отвечаю на свой вопрос, так что, может быть, кто-то найдет это полезным. Как сказал @cbr, это открытый вопрос с angular. Я попробовал решение, данное в этом посте, и оно сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...