如何通过 Firebase 函数将参数传递给外部 API
How to pass parameters to an external API via Firebase Functions
我已经使用 Firebase Functions 重新路由了一个外部 API 调用,一切似乎都运行良好(我有付费计划)但是,我不确定如何从客户端传递参数。服务器端的代码如下所示:
const functions = require("firebase-functions");
const cors = require("cors")({ origin: true });
const { default: axios } = require("axios");
exports.news = functions.https.onRequest((request, response) => {
cors(request, response, () => {
var config = {
headers: {
"X-Api-Key": functions.config().news.key,
},
};
axios
.get(
"https://newsapi.org/v2/everything?q=usa&from=2021-08-27&to=2021-08-28&sortBy=popularity",
config
)
.then((res) => {
response.send(res.data);
})
.catch((error) => {
response.sendStatus(error);
});
});
});
我将从客户端传递的是当前硬编码在 url 中的开始日期和结束日期。只是为了确定,我是否正确使用 Firebase 函数生成的 link 从客户端进行 API 调用:
https://us-central1-<PROJECT-NAME>.cloudfunctions.net/news/
?
提前感谢您的所有回复。
在正文中发送数据并处理请求。
您可以将这些参数作为查询参数传递,类似于 API 调用:
axios({
method: 'get',
url: 'the_cloud_function_url?from=the_date&to=another_date'
});
这些查询参数可以通过 request.query
在 Cloud 函数中访问。
或者,您可以从 Axios(客户端)发出 POST
请求并在正文中传递数据:
axios({
method: 'post',
url: 'the_cloud_function_url',
data: {
fromDate: '2021-08-27',
toDate: '2021-08-29'
}
});
可以使用 request
对象在云函数中读取此数据:
exports.news = functions.https.onRequest((request, response) => {
const {fromDate, toDate} = request.body
console.log(fromDate, toDate)
// continue
})
我已经使用 Firebase Functions 重新路由了一个外部 API 调用,一切似乎都运行良好(我有付费计划)但是,我不确定如何从客户端传递参数。服务器端的代码如下所示:
const functions = require("firebase-functions");
const cors = require("cors")({ origin: true });
const { default: axios } = require("axios");
exports.news = functions.https.onRequest((request, response) => {
cors(request, response, () => {
var config = {
headers: {
"X-Api-Key": functions.config().news.key,
},
};
axios
.get(
"https://newsapi.org/v2/everything?q=usa&from=2021-08-27&to=2021-08-28&sortBy=popularity",
config
)
.then((res) => {
response.send(res.data);
})
.catch((error) => {
response.sendStatus(error);
});
});
});
我将从客户端传递的是当前硬编码在 url 中的开始日期和结束日期。只是为了确定,我是否正确使用 Firebase 函数生成的 link 从客户端进行 API 调用:
https://us-central1-<PROJECT-NAME>.cloudfunctions.net/news/
?
提前感谢您的所有回复。
在正文中发送数据并处理请求。
您可以将这些参数作为查询参数传递,类似于 API 调用:
axios({
method: 'get',
url: 'the_cloud_function_url?from=the_date&to=another_date'
});
这些查询参数可以通过 request.query
在 Cloud 函数中访问。
或者,您可以从 Axios(客户端)发出 POST
请求并在正文中传递数据:
axios({
method: 'post',
url: 'the_cloud_function_url',
data: {
fromDate: '2021-08-27',
toDate: '2021-08-29'
}
});
可以使用 request
对象在云函数中读取此数据:
exports.news = functions.https.onRequest((request, response) => {
const {fromDate, toDate} = request.body
console.log(fromDate, toDate)
// continue
})