gpt4 book ai didi

javascript - Claudia JS 框架中请求对象未正确解析

转载 作者:行者123 更新时间:2023-11-28 03:40:42 25 4
gpt4 key购买 nike

我想构建一个 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"
}

它返回一个字符串而不是一个对象。因此,我无法像这样解析它: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;
});

关于javascript - Claudia JS 框架中请求对象未正确解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57327687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com