如何通过 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
})