Невозможно сохранить специальные символы в запросе URL-адреса маршрутизатора expressjs - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь запросить запись из базы данных, используя следующие критерии: VITAMINS + ZINC 100 мг / 10 мг на 5 мл сиропа

Вот как выглядит мой URL запроса:

http://localhost:4200/api/search?key=VITAMINS%20+%20ZINC%20100MG/10MG%20PER%205ML%20SYRUP

Вот мой экспресс-маршрутизатор выглядит так:

router.get('/search', (req, res, next) => {
  const query = req.query;
  console.log(query.key);

  .... omitted

});

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

VITAMINS   ZINC 100MG/10MG PER 5ML SYRUP

1 Ответ

0 голосов
/ 22 мая 2018

В терминах URI, символ + является одним из зарезервированных символов .

Когда символ из зарезервированного набора («зарезервированный символ») имеет особое значение («зарезервированная цель») в определенном контексте, и схема URI говорит, что необходимо использовать этосимвол для какой-либо другой цели, тогда символ должен быть закодирован в процентах.

В вашем случае строка запроса должна быть закодирована в процентах, прежде чем попасть в URL на стороне клиента:

encodeURIComponent ("VITAMIN + ZINC")

А затем на стороне сервера (т.е. экспресс) декодировать запрос, используя decodeURIComponent().

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