使用 Express.js 路由将 JSON 数据发送到 Google Cloud Functions

Send JSON Data to Google Cloud Functions using Express.js Routing

任何人都可以帮助我理解,为什么我在调用 google 云函数时出错,而如果我在本地调用相同的函数则不会出错。

PFB 函数的代码,我从中调用

const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.use(express.json());
app.use(express.urlencoded());
var n1 = null;
var n2 = null;
app.get('/sum', (req, res) => {
    n1 = Number(req.query.n1 || req.body.n1);
    n2 = Number(req.query.n2 || req.body.n2);
    res.json({
        "n1": n1,
        "n2": n2,
        "result": n1 + n2
    })
});
app.listen(3000);
exports.calculator = app;

Javascript 调用 google 云函数的代码:

var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"n1":1,"n2":2});
var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};
fetch("https://us-central1-testing-297304.cloudfunctions.net/calculator/sum", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

所有本地或云功能的请求都是通过 Postman 发出的

gcp 给出的错误:

调用您的函数 returns“无法获取 /sum”错误,因为使用 GET/HEAD 方法的请求不能有 body。你应该做的是将你的请求更改为 POST(在你的代码和你的邮递员请求上)。

app.post('/sum', (req, res)

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

我在我的测试函数中这样做了,我能够使用 Postman 获得 200 OK 的输出。