Javascript 谷歌云功能无法捕获post请求
我的目标是使用谷歌云功能将post请求的结果插入bigquery 我的问题是,云函数在我的表中插入空值,因此它无法从post请求中获取参数 以下是我的发帖请求:Javascript 谷歌云功能无法捕获post请求,javascript,post,google-cloud-platform,google-cloud-functions,Javascript,Post,Google Cloud Platform,Google Cloud Functions,我的目标是使用谷歌云功能将post请求的结果插入bigquery 我的问题是,云函数在我的表中插入空值,因此它无法从post请求中获取参数 以下是我的发帖请求: <script> var event_category = 'action'; var event_name = 'click'; var page_url = 'test' var request = new XMLHttpRequest(); request.open('POST', 'url to my cloud f
<script>
var event_category = 'action';
var event_name = 'click';
var page_url = 'test'
var request = new XMLHttpRequest();
request.open('POST', 'url to my cloud function');
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
params = {
event_category: event_category,
event_name: event_name,
page_url: page_url
}
request.send( JSON.stringify(params));
console.log(JSON.stringify(params));
</script>
如前所述,问题在于从google cloud函数读取post请求,不确定如何取消阻止该请求,而不是使用
req.body
使用req.query
,然后像这样通过URL传递变量,对于HTTP事件触发Google云函数https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME?event_category=CATEGORY&event_name=EVENT&page_url=URL
当我试图使用您的代码进行复制时,没有分配变量,因此在最后它们是未定义的,但是在将req.body
修改为req.query
后,我能够获得正确的值
以下是Google Cloud函数的示例代码:
var event_category;
var event_name;
var page_url;
event_category = req.query.event_category;
event_name = req.query.event_name;
page_url = req.query.page_url;
console.log("===VALUES===");
console.log(event_category);
console.log(event_name);
console.log(page_url);
之后,您将看到Google Stackdrive日志页面中记录的值 而不是
req.body
使用req.query
然后像这样通过URL传递变量,对于HTTP事件触发Google云函数https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME?event_category=CATEGORY&event_name=EVENT&page_url=URL
当我试图使用您的代码进行复制时,没有分配变量,因此在最后它们是未定义的,但是在将req.body
修改为req.query
后,我能够获得正确的值
以下是Google Cloud函数的示例代码:
var event_category;
var event_name;
var page_url;
event_category = req.query.event_category;
event_name = req.query.event_name;
page_url = req.query.page_url;
console.log("===VALUES===");
console.log(event_category);
console.log(event_name);
console.log(page_url);
之后,您将看到Google Stackdrive日志页面中记录的值 有一种方法可以处理实际的帖子,而不必求助于获取。。。从
有一种方法可以处理一个实际的职位,而不必求助于获取。。。从
const escapeHtml = require('escape-html');
/**
* Responds to an HTTP request using data from the request body parsed according
* to the "content-type" header.
*
* @param {Object} req Cloud Function request context.
* @param {Object} res Cloud Function response context.
*/
exports.helloContent = (req, res) => {
let name;
switch (req.get('content-type')) {
// '{"name":"John"}'
case 'application/json':
name = req.body.name;
break;
// 'John', stored in a Buffer
case 'application/octet-stream':
name = req.body.toString(); // Convert buffer to a string
break;
// 'John'
case 'text/plain':
name = req.body;
break;
// 'name=John' in the body of a POST request (not the URL)
case 'application/x-www-form-urlencoded':
name = req.body.name;
break;
}
res.status(200).send(`Hello ${escapeHtml(name || 'World')}!`);
};