NodeJS / Express Создание URL с использованием нескольких req.query.params - PullRequest
0 голосов
/ 06 января 2020

У меня есть небольшое express приложение API, которое выполняет вызовы внешнего API. Я пытаюсь создать URL для внешнего API на основе параметров запроса, поступающих в мой API. Я пытался использовать блок if / else, но const доступен только внутри этого блока.

Вот что у меня есть:

const baseUrl = https://externalapi.com/api&apikey=<APIKEY>;
const response = await axios.get(url);

Так что я хочу иметь возможность добавить параметры запроса в baseUrl в зависимости от того, что входит, поэтому, если у пользователя есть параметр param1, то добавьте это к baseUrl, чтобы сделать url, но если они задают param2, то добавьте и это или комбинация одного или другого или обоих

1 Ответ

0 голосов
/ 06 января 2020

Если вы устанавливаете переменные в предложениях if или else, они должны быть переменными, а не const s. И они должны быть объявлены вне условий if / else.

let foo
if (a) foo = 'a'
else foo = 'b'

Возможность для вашего приложения может использовать классы URL узла .

const targetUrl = new URL('https://externalapi.com/api')
targetUrl.searchParams.append('apikey', '<<SECRET API KEY>>') //SECURITY PROBLEM!

if (a) targetUrl.searchParams.append('objecttype', 'a')
else targetUrl.searchParams.append('objecttype', 'b')

You можно использовать свойство .searchParams класса URL для сборки вашего запроса.

Совет по безопасности : вам, вероятно, следует использовать POST, а не GET для вызова этого API, и поместите ваши чувствительные параметры (например, ваш секретный ключ API) в параметры POST. Параметры URL-адресов хранятся в журналах веб-сервера. Они могут храниться в журналах прокси-сервера, которые не контролируются вами или поставщиком вашего внешнего API. Объяснение того, как сделать рефакторинг вашего кода, выходит за рамки этого SO-ответа.

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