2

Node.jsで記述されたRESTクライアントを(GET経由で)ServiceStackJSONベースのサービスに送信できるようにするのに問題があります。シリアル化エラーが発生します。ただし、同じJSON(Node.js Restクライアントによって生成された)をCURL経由で送信されたServiceStackサービスの呼び出しにコピーして貼り付けましたが、ServiceStackではJSONに問題はありません。 CURLからのものである限り。

誰もが流すことができるどんな指針またはさらなる啓蒙も大いに感謝されるでしょう!

ありがとう、

タミ

4

1 に答える 1

6

そこで、CURL(ServiceStack JSONサービスへのJSONの送受信)だけでなく、Node.jsで上記を機能させる方法を見つけました。

私は次のことをしました:

  • http通信ラッパーとして「restler」パッケージを使用します
  • 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);
    
        });
    
  • ServiceStackサービスとメソッドへの正しいURLとリモートDTOを上記に入力してください

ご参考までに

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
于 2012-11-10T03:45:31.467 に答える