使用 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 的输出。
任何人都可以帮助我理解,为什么我在调用 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 的输出。