Express Can';t将数据发布到Google Cloud Run
我在Google Cloud Run上有一个非常基本的express服务,它构建并部署到一个容器中。它具有允许未经身份验证的访问设置 我在前端使用fetch和React将数据发送到服务器并接收响应 在服务器上,我似乎无法从请求主体中获取数据?无论我对标题等使用什么设置,我都无法从中获取任何数据 我正在使用fetch clientside发送POST请求:Express Can';t将数据发布到Google Cloud Run,express,google-cloud-run,Express,Google Cloud Run,我在Google Cloud Run上有一个非常基本的express服务,它构建并部署到一个容器中。它具有允许未经身份验证的访问设置 我在前端使用fetch和React将数据发送到服务器并接收响应 在服务器上,我似乎无法从请求主体中获取数据?无论我对标题等使用什么设置,我都无法从中获取任何数据 我正在使用fetch clientside发送POST请求: const sendData = async() => { const response = await
const sendData = async() => {
const response = await fetch('https://my-service.run.app', {
method: 'POST',
mode: 'no-cors',
body: { mydata: "some data"},
json: true
});
return response;
}
在服务器上,我的服务非常简单。目前我只想将json从客户端发送到云运行服务器,记录它,然后将相同的数据发送回客户端作为响应。但是,控制台日志总是给我一个空对象
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const {Storage} = require('@google-cloud/storage');
const cors = require('cors');
const corsOptions = {
origin: true,
mode: 'no-cors',
optionsSuccessStatus: 200
};
const port = process.env.PORT || 8080;
app.use(bodyParser.json());
app.listen(port, () => {
console.log('Listening on port', port);
});
app.post('/', async (req, res) => {
try {
const corsMiddleware = cors(corsOptions);
return corsMiddleware(req, res, () => {
const servicedata = req.body;
console.log("MY DATA", servicedata )
res.send(srcontext);
});
}
catch (ex) {
console.log(`Error: ${ex}`);
}
})
问题是您的第一个代码。在
节点fetch
中提到,在进行JSON POST时,您应该添加头头:{'Content Type':'application/JSON'}
,该头不在代码中
那么,您的代码应该是这样的
const sendData=async()=>{
const response=等待获取('https://my-service.run.app', {
方法:“POST”,
模式:“无cors”,
body:JSON.stringify({“mydata”:“some data”}),
标题:{'Content-Type':'application/json'}
json:true
});
返回响应;
}
选项json:true
仅用于将响应解析为json,而不是请求
编辑
正如@sebastian simon所建议的:
({mydata:“some data”})
和({“mydata:“some data”})
是等价的表达式,产生等价的对象。如果mydata
是字符串或符号变量,则需要使用({[mydata]:“some data”})
。是否尝试使用Curl?你确认你的服务正常吗?是的,服务正常。我在Chrome的“网络”选项卡中得到了200,登录该服务确认了对端点的200 post请求。因此,问题来自前端,它没有正确格式化请求。对不起,我不知道!!不用担心,纪尧姆-一如既往,我非常感谢您的帮助-我在下面给出了详细的答案,希望能够解决前端无法工作的确切原因:)