我想构建一个应用程序接口作为一个无服务器的AWS Lambda函数,并使用ClaudiaJS作为框架。但是,在将JSON对象传递给POST路由时,我无法正确解析request.body的内容,因为它们的类型是"string“,而不是" object”。如果这是一个快速的node.js后端,我会直接使用bodyParser,但在这种情况下我不能。感谢您提供的任何帮助:)
我尝试了JSON.parse(req.body),但没有用。
这是POST路由的代码
var ApiBuilder = require('claudia-api-builder'),
api = new ApiBuilder();
module.exports = api;
api.post('/upload', (req, res) => {
return req.body; //I return the body for debugging purposes
});使用POSTMAN将JSON对象发布到服务时(content-type:application/json)
{
"latitude": "52.514818",
"longitude": "13.356101",
"additionalData": "xyc"
}它返回一个字符串,而不是一个对象。因此,我不能像这样解析它: req.body.latitude并获取纬度的值。
"----------------------------641080260577727375179249\r\nContent-Disposition: form-data; name=\"file\"; filename=\"Berlin.json\"\r\nContent-Type: application/json\r\n\r\n{\n \"latitude\": \"52.514818\",\n \"longitude\": \"13.356101\",\n \"additionalData\": \"xyc\"\n}\n\r\n----------------------------641080260577727375179249--\r\n"发布于 2019-08-06 07:42:36
您遇到的问题是,您正在发送API表单数据,并期望它的行为像JSON一样。
最简单的解决方案是在POST正文中发送实际的JSON,在这种情况下,您现有的代码将正常工作。
否则,您只需从现有字符串中获取JSON。
var ApiBuilder = require('claudia-api-builder'), api = new ApiBuilder();
module.exports = api;
api.post('/upload', (req, res) => {
console.log(req.body); // outputs the form-data as string
var myString = req.body.substring(
req.body.lastIndexOf("{"),
req.body.lastIndexOf("}")+1
);
var myJson = JSON.parse(myString);
console.log(myJson) // outputs a valid JSON object
return myObj;
});https://stackoverflow.com/questions/57327687
复制相似问题