如何让Node.js REST客户端能够与ServiceStack JSON服务进行通信

时间:2012-11-10 01:20:18

标签: node.js servicestack

我在使用Node.js编写的休眠客户端能够将数据(通过GET)发送到基于ServiceStack JSON的服务时遇到问题。它给了我一个序列化错误。但是,我已经将相同的JSON(由我的Node.js rest客户端生成)复制并粘贴到通过CURL发送的ServiceStack服务调用中,而ServiceStack没有出现JSON问题 - 再次...仅作为只要它来自CURL。

任何人都可以提出的任何指示或进一步的启示都将非常感激!

谢谢,

塔米

1 个答案:

答案 0 :(得分:6)

所以我想出了如何在Node.js中使用上述工作,而不仅仅是在CURL中(向ServiceStack JSON服务发送/接收JSON)。

我做了以下事情:

  • 使用" restler" package作为我的http通信包装器
  • 使用" get()" restler的方法...不要使用" 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);
    
        });
    
  • 请务必使用正确的网址和远程DTO向您的ServiceStack服务和方法填写以上内容

<强> FYI

如果你的json没有在ServiceStack中序列化到远程DTO,一种快速的测试方法是复制并粘贴存储在&#34; json&#34;中的json。将变量放在curl命令中以查看它是否以这种方式正确序列化 (下面的示例卷曲片段......)

这是我最初做的(见原始问题)试图解决序列化问题。它帮助我将问题隔离到restler / Node.js端,这样我就可以进行上面看到的修改 - 即不使用&#34; json()&#34;解决方法。

    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