我在获取用 Node.js 编写的休息客户端以能够将数据(通过 GET)发送到基于 JSON 的 ServiceStack 服务时遇到问题。它给了我一个序列化错误。但是,我已将相同的 JSON(由我的 Node.js REST 客户端生成)复制并粘贴到通过 CURL 发送的对 ServiceStack 服务的调用中,并且 ServiceStack 对 JSON 没有问题——再次......仅作为只要它来自 CURL。
任何人都可以提供的任何指示或进一步的启示将不胜感激!
谢谢,
塔米
我在获取用 Node.js 编写的休息客户端以能够将数据(通过 GET)发送到基于 JSON 的 ServiceStack 服务时遇到问题。它给了我一个序列化错误。但是,我已将相同的 JSON(由我的 Node.js REST 客户端生成)复制并粘贴到通过 CURL 发送的对 ServiceStack 服务的调用中,并且 ServiceStack 对 JSON 没有问题——再次......仅作为只要它来自 CURL。
任何人都可以提供的任何指示或进一步的启示将不胜感激!
谢谢,
塔米
所以我想出了如何在 Node.js 中而不只是在 CURL 中(向 ServiceStack JSON 服务发送/接收 JSON)。
我做了以下事情:
使用restler的“get()”方法...不要使用“json()”方法
(代码片段如下...)
var obj = {};
obj.objectName = 'foo';
obj.foos = [{firstname: 'foo1', lastname: 'foo-you'}, {firstname: 'foo2', lastname: 'foo-you-2'}];
var json = JSON.stringify(obj);
var options = {
method: "get",
data: json,
headers: {'Content-type': 'application/json', 'Accept': 'application/json'}
};
rest.get('http://localhost/servicestack-api/getmethod', options).
on('complete', function(data, response){
console.log(data);
console.log(response.statusCode);
});
确保在上面填写正确的 url 和远程 DTO 到您的 ServiceStack 服务和方法
供参考
如果您的 json 没有序列化到 ServiceStack 中的远程 DTO,一种快速的测试方法是将存储在上面“json”变量中的 json 复制并粘贴到 curl 命令中,以查看它是否以这种方式正确序列化。
(下面的示例卷曲片段......)
这就是我最初所做的(请参阅原始问题)以尝试解决序列化问题。它帮助我将问题隔离到 restler/Node.js 方面,因此我可以进行您在上面看到的修改——即不使用 restler 的“json()”方法。
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X GET -d '{"foos":[{"firstname":"foo1","lastname":"foo-you"}, {"firstname": "foo2", "lastname": "foo-you-2"}],"objectName": "foo"}' http://localhost/servicestack-api/getmethod