如何在nodejs服务器上使用HTTPPOST数据



我正在使用谷歌云功能,希望处理post请求提供的数据。

在网站上

const Http = new XMLHttpRequest();
const url='https://us-central1-finitest-4aafb.cloudfunctions.net/create-user1';
Http.open("POST", url);
Http.send("name=Negan&password=Lucille");
Http.onreadystatechange = (e) => {
console.log(Http.responseText)
}

在服务器上

exports.helloWorld = (req, res) => {
res.set('Access-Control-Allow-Origin', "*");
res.set('Access-Control-Allow-Methods', 'GET, POST');
let message = 'User created ' + req.body.user;
res.status(200).send(message);
};

我如何使用";name=尼根&密码=Lucille";服务器上的数据?

由于您使用的是带有XMLHttpRequest()的POST请求,因此需要通过请求主体获取参数,如下所示:

exports.helloWorld = functions.https.onRequest((req, res) => {
res.set('Access-Control-Allow-Origin', "*");
res.set('Access-Control-Allow-Methods', 'GET, POST');
console.log(req.body);
console.log(req.body.name);
console.log(req.body.password);
let message = 'User created ' + req.body.name;
res.status(200).send(message);
});

更多详细信息,请参阅文档。

在前端,您还需要将正确的内容类型(即application/x-www-form-urlencoded(与请求一起发送,如下所示:

const Http = new XMLHttpRequest();
const url='https://us-central1-finitest-4aafb.cloudfunctions.net/helloWorld';
Http.open("POST", url);
// send the proper header information along with the request
Http.setRequestHeader(
'Content-type',
'application/x-www-form-urlencoded'
);
Http.send("name=Negan&password=Lucille");
Http.onreadystatechange = (e) => {
console.log(Http.responseText)
}

如Ashish Kumar所解释的,如果您想将它们作为查询字符串参数,您需要将它们添加到URL中,而不是通过send(),因为您使用POST。

const url='https://us-central1-finitest-4aafb.cloudfunctions.net/create-user1';
Http.open("POST", url + "?name=Negan&password=Lucille");  // Note the ?
Http.send();

在这种情况下,您可以使用req.query.name

此搜索结果中的更多详细信息:https://www.google.com/search?client=firefox-b-d&q=XMLHttpRequest.send%28%29+POST+查询字符串


最后,请注意,使用https://us-central1-finitest-4aafb.cloudfunctions.net/create-user1,您调用的不是helloWorld云函数,而是create-user1云函数。

这些被称为请求查询,可以通过req.query对象访问。因此,在您的情况下,您可以作为访问数据

req.query.name
req.query.password

相关内容

  • 没有找到相关文章