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



有人能帮助我理解,为什么我在调用谷歌云函数时会出错,而如果我在本地调用相同的函数,我不会出错。

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代码:

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:给出的错误

调用函数返回"无法获取/求和";错误,因为使用GET/HEAD方法的请求不能具有body。您应该将您的请求更改为POST(针对您的代码和Postman请求(。

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

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

我在测试函数中做到了这一点,并使用Postman获得了200 OK的输出。

最新更新