Как я уже упоминал в комментариях, ваш вопрос сформулирован так, что вы звучите так, будто вам абсолютно необходимы два запроса.
В комментариях OP пояснил, что им не обязательно нужны два запроса, поэтому в этой заметке есть несколько вещей, которые вы можете попробовать.
1) Настроить application.conf
Файлы конфигурации позволяют нам параметризировать и настраивать переменные, необходимые для работы наших приложений. Вы можете варьировать конфигурационные файлы между средами (dev / stage / prod et c.) И развертываниями.
Предполагается, что ваш API_KEY меняется не часто. Подумайте об этом, как о жестком кодировании вашего API-ключа, например
var apiKey = "...."
, но это лучший и более безопасный способ сделать это.
В вашем случае это не сработает, но хорошо быть осознавать это. Вы можете использовать этот пакет в будущем
2) Получить параметры запроса запроса.
Это ваша лучшая ставка
Параметры запроса, как следует из названия, позволяют нам передавать переменные с запросами get для фильтрации результатов на стороне сервера. Это может быть что-то вроде идентификатора пользователя, номера страницы и т. Д. c.
Ваш URL-адрес для получения со стороны клиента будет выглядеть примерно так
mydomain.com/getmovies?apikey={YourKeyGoesHere}
Я уверен, что вы видели, что ? во многих из URL, которые вы посещаете.
Если вы используете express, ваша конечная точка будет выглядеть примерно так:
app.get(`/getmovies`, (req, res) => {
var apiKey = req.query.apikey
request(`http://www.omdbapi.com/?t=${data}&apikey=${apikey}`,
function (error, response, body) {
if (!error && response.statusCode == 200) {
var parsedBody = JSON.parse(body);
res.send(parsedBody)
} else {
console.log("error in the server")
}
}
)
})
См. Как получить GET (строка запроса) переменных в Express. js on Node.js?
Это позволит вам передать его со стороны клиента.
Если вы не используете express, см. https://nodejs.org/api/querystring.html
3) Если вам абсолютно необходимы две конечные точки ...
Используйте готовить ie. Как только повар ie установлен, он транспортируется туда-сюда с каждым запросом, пока не истечет срок его действия.
См. Это Как настроить повар ie в node js, используя express framework? или this
После получения сообщения запрос вы бы установили повара ie
app.post('/postmovie', (request, response) => {
response.cookie("apikey", data, maxAge: 900000, httpOnly: true });
response.json({
status: 'success'
})
})
Как только этот повар ie будет установлен, он будет доставлен клиенту и обратно со всеми запросами, включая получение.
Итак, в вашем запросе на получение вы можете сделать:
app.get(`/getmovies`, (req, res) => {
var apikey = req.cookies.apikey;
request(`http://www.omdbapi.com/?t=${data}&apikey=${apikey}`,
function (error, response, body) {
if (!error && response.statusCode == 200) {
var parsedBody = JSON.parse(body);
res.send(parsedBody)
} else {
console.log("error in the server")
}
}
)
})
Так в чем же разница между # 2 и # 3?
Параметры запроса те, которые закодированы в URL, являются publi c и могут быть перехвачены. Это хорошо для таких вещей, как номера страниц, но если ключ API является платным, это не очень безопасно. Кроме того, как только вы отправляете запрос, он пропадает (если вы не сохраните ключ API на стороне клиента в памяти или локальном хранилище), поэтому пользователю придется вводить ключ API все заново.
Cookies с другой стороны, являются частными. Флаг http-only , который мы установили в коде, не позволяет даже браузеру читать его. Только выдающий сервер может видеть содержимое. Кроме того, файлы cookie сохраняются в браузере до истечения срока годности, поэтому их можно повторно использовать с несколькими запросами.
Выберите тот, который работает для вас.
PS Я не проверял код выше, Возможно, вам придется немного подправить его. Ответ заключается в том, чтобы дать вам общее представление о том, как эти вещи обычно обрабатываются