请求对象在 Claudia JS 框架中未正确解析
Request object not parsed correctly in Claudia JS framework
我想构建一个 API 作为无服务器 AWS Lambda 函数并使用 ClaudiaJS 作为框架。但是,当将 JSON 对象传递给 POST 路由时,我无法正确解析 request.body 的内容,因为它们是 "string" 类型而不是 "object" 类型].如果这是一个 express 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 对象发布到服务时(内容类型:application/json)
{
"latitude": "52.514818",
"longitude": "13.356101",
"additionalData": "xyc"
}
它 returns 一个字符串而不是一个对象。因此,我无法像这样解析它: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"
您遇到的问题是,您正在发送 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;
});
我想构建一个 API 作为无服务器 AWS Lambda 函数并使用 ClaudiaJS 作为框架。但是,当将 JSON 对象传递给 POST 路由时,我无法正确解析 request.body 的内容,因为它们是 "string" 类型而不是 "object" 类型].如果这是一个 express 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 对象发布到服务时(内容类型:application/json)
{
"latitude": "52.514818",
"longitude": "13.356101",
"additionalData": "xyc"
}
它 returns 一个字符串而不是一个对象。因此,我无法像这样解析它: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"
您遇到的问题是,您正在发送 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;
});