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

TWr*_*ght 2 node.js servicestack

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

任何指针或任何人可以进一步启发的启示将不胜感激!

谢谢,

塔米

TWr*_*ght 6

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

我做了以下事情:

  • 使用"restler"包作为我的http通信包装器
  • 使用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);
    
        });
    
    Run Code Online (Sandbox Code Playgroud)
  • 确保使用正确的URL和远程DTO填写上面的ServiceStack服务和方法

FYI

如果您的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
Run Code Online (Sandbox Code Playgroud)