英文:
How can I view the body data of an HTTP request in a Firebase Functions JS?
问题
"I'm trying to view the body data in a Firebase Functions POST request, but the console always returns 'undefined' in the Firebase function logs!
Question: How can I view the body data in a Firebase function to use it?
Here My Code :
exports.test = functions.https.onRequest(async (req, res) => {
const id = req.body.id
});
I allready used but not working :
req.on('data', (chunk) => {
// The chunk is a Buffer object containing a chunk of the request body data
body += chunk;
}).on('end', () => {
// The request body data has been fully received, and the 'body' variable contains the complete request body
});
I should get 'id' from 'body.id'.
英文:
"I'm trying to view the body data in a Firebase Functions POST request, but the console always returns "undefined" in the Firebase function logs!
Question: How can I view the body data in a Firebase function to use it?
Here My Code :
exports.test = functions.https.onRequest(async (req, res) => {
const id = req.body.id
});
I allready used but not working :
req.on('data', (chunk) => {
// The chunk is a Buffer object containing a chunk of the request body data
body += chunk;
}).on('end', () => {
// The request body data has been fully received, and the `body` variable contains the complete request body
});
i should to get id from body.id
答案1
得分: 1
根据这个线程的回答,您应该使用Content-Type并将其设置为"application/json",只有这样您的请求主体才能像这里所示一样可访问。
此外,您可以查看从请求中读取值,该文档解释了Content Type上使用application/json的必要性。
如果您查看 Firebase 函数日志,您会看到请求中没有接收到主体,因此您的主体内容是未定义的。
还有一种可能性是 Firebase 函数中的req.body属性未正确格式化,或者如果函数没有正确解析它,您可以使用JSON.parse(req.body);强制解析请求主体。
因此,更新后的代码将如下所示:
exports.test = functions.https.onRequest(async (req, res) => {
const body = JSON.parse(req.body);
const id = body.id;
// ...
});
或者
您可以使用 body 解析中间件,并强制将主体解析为 JSON,如此回答所示。
英文:
As per this thread’s answer you should use Content-Type and make it to "application/json"
as only then your body will be accessible like as shown in here
Also you can check out Read values from the request which explains the need of application/json on Content Type.
If you check the firebase functions logs you can see there is no incoming body received from the request and because of that your body content’s are undefined.
There is also a possibility that the req.body property in a Firebase Functions is not properly formatted or if it is not properly parsed by the Function, so you can force it to parse using JSON.parse(req.body); to parse the request body.
So the updated code will something look like:
exports.test = functions.https.onRequest(async (req, res) => {
const body = JSON.parse(req.body);
const id = body.id;
// ...
});
OR
>You can use the body parser middleware and force parse the body as JSON as shown in this answer
答案2
得分: 0
req.body可以在请求体类型为application/json或application/x-www-form-urlencoded时使用,否则使用req.rawBody。
英文:
req.body can be used if the request body type is application/json or application/x-www-form-urlencoded otherwise use req.rawBody
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。



评论