我从未使用过 Frisby 或 superagent,但我发现这里有两个问题:
1. 使用 POST 方法将无效的 JSON 从客户端传递到服务器。
这是不可能的,因为它很快就会在客户端本身被拒绝,并且在向服务器发出 POST 请求之前会出错。(因为在使用 http 时只有字符串,所以客户端本身会尝试对 JSON 进行字符串化,这样会卡在无效的 JSON 中)
2. 将无效的 JSON 作为字符串传递
示例:使用 JQuery 发布这样的字符串
$.post("demo_test_post.asp",
{
name: 'pqr:{"abc":"abc",}' // see there is a comma at the end making JSON invalid
},
function(data, status){
alert("Data: " + data + "\nStatus: " + status);
});
这将有效地将无效的 JSON(在本例中为名称)作为 srting 传递给服务器。但这将要求您在使用JSON.parse()
之前将字符串解析为 JSON。当你尝试得到这个时:
SyntaxError:Object.parse 处的意外标记 p(native) 在 Object.app.get.res.send.data [作为句柄] (/home/ubuntu/workspace/TapToBook.js:35:19) 在 next_layer (/home/ubuntu/workspace/node_modules/express/lib /router/route.js:103:13) 在 Route.dispatch (/home/ubuntu/workspace/node_modules/express/lib/router/route.js:107:5) 在 proto.handle.c (/home/ubuntu /workspace/node_modules/express/lib/router/index.js:195:24) 在 Function.proto.process_params (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:251:12) 在下一个 (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:189:19) 在 Layer.staticMiddleware [作为句柄] (/home/ubuntu/workspace/node_modules/express/node_modules/serve-static /index.js:55:61) 在 proto.handle 的 trim_prefix (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:226:17)。c (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:198:9)
因此,无论您使用哪个包Rest,您都可以将无效的 JSON 作为字符串传递,但不能使用它。