2012-11-10 27 views
2

我遇到的問題是,使用Node.js編寫的休息客戶端能夠將數據(通過GET)發送到ServiceStack JSON基於服務。這給我一個序列化錯誤。然而,我已經複製並粘貼了相同的JSON(由我的Node.js休息客戶端生成)到通過CURL和ServiceStack發送的ServiceStack服務的調用中,JSON沒有問題 - 只是...只要它來自CURL。如何讓Node.js REST客戶端能夠與ServiceStack JSON服務進行通信

任何人都可以擺脫任何指針或進一步的啓示將非常感謝!

感謝,

塔米

回答

6

所以我想通了,如何讓上述工作中的Node.js,而不僅僅是在捲曲(發送/接收JSON到ServiceStack JSON服務)。

我做了以下內容:

  • 使用 「restler」 包我的HTTP通訊包裝
  • 使用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); 
    
        }); 
    
  • 請務必填寫上面的正確的URL和遠程DTO您ServiceStack服務和方法

FYI

如果你的JSON不序列到遠程DTO在ServiceStack,一個快速的方法來測試將是複製和粘貼存儲在「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 
相關問題