9

私は現在、に取り組んでいますがServiceStack、非常に新しいです。(非常に興味深いです。彼らは、WCF や REST WCF (GET、POST、PUT、DELETE) よりも優れていると言っています)

また、実行するコードが少なくて済み、高速に実行できるため、便利であることがわかりました。

現在、データを投稿したいとき。クラスのオブジェクトを作成し、POST リクエストで送信します。

JsonServiceClient client = new JsonServiceClient(myURL);
MYclass cls= MakeObjectForServiceStackToInsertData();
var res = client.Post<MYClass>("/postrequest", cls); 

上記のコードで、私が何をしているのかを理解できます。私は間違っていないと思います。混乱している場合はお知らせください。

クライアント アプリケーションのクラスの JSON で文字列を(KEY->Value)(手動で) 作成し、サービス スタックを使用してサーバーに POST し、データを送信できますか。

すなわち

string str = myJsonString();
var res = client.Post<.....>

では、オブジェクト全体を投稿するのではなく、JSON 文字列を作成して ServiceStack の POST イベントでデシリアライズし、DB にデータを挿入できるようにするとよいでしょうか。

何か案が?

4

2 に答える 2

8

生のJSON文字列を渡したいというあなたの動機が何であるかはわかりませんが、小さなJSONペイロードのみを確​​実に渡す場合は、nullが含まれていないため、Json / Jsv ServiceClientsを自信を持って使用できます値なので、入力したフィールドのみが渡されます。

Json シリアライザーを直接使用して、何がシリアライズされるかを確認できます。

Console.WriteLine(JsonSerializer.SerializeToString(cls));

サービスをテスト/デバッグするだけの場合、最良の方法は、フィールドにクエリ文字列を入力してブラウザーを使用することです。つまり、次のようになります。

http://localhost/myservice/postrequest?Field1=value1&Field2=value2

生の JSON 文字列を渡したいほとんどの場合、別の HTTP クライアントを使用する必要があります。その場合は、すべての HTTP クライアントでネイティブにサポートされているため、代わりにフォーム データを POST する Web サービスを呼び出すことをお勧めします。 JSONシリアライザーを実行する必要はありません。たとえば、curl を使用して HTTP POST 経由で同じサービスを呼び出す方法は次のとおりです。

curl -d "Field1=value1&Field2=value2" http://localhost/myservice/postrequest

同じサービスを呼び出す方法は他にもたくさんあります。完全なリストについては、 Service Stack の Hello World の例を参照してください。HTML を使用して呼び出す方法は次のとおりです。

<form action="http://localhost/myservice/postrequest" method="POST">
    <input type="text" name="Field1" value="value1" />
    <input type="text" name="Field2" value="value2" />
</form>

Web ブラウザーから投稿しているため、Service Stack は HTML を返しますが、JSON の結果を確認したい場合は、URL に?format=jsonを追加するだけです。

または、単純に JavaScript と jQuery を使用して Web サービスに POST することもできます。以下の例では、JS オブジェクトに自動的に変換される JSON として結果が返されます。

$.ajax({
  type: 'POST',
  url: "http://localhost/myservice/postrequest",
  data: {Field1: "value1", Field2: "value2"},
  success: function(r) { alert(r.Result) },
  dataType: "application/json"
});

Web ブラウザーを使用してサービスをデバッグする利点は、組み込みのネットワーク インスペクター (つまり、Chrome の Web インスペクター) を使用して、Web サービスの完全な要求/応答を表示できることです。

慣れていない場合は、 HTTP トラフィックを簡単に分析できるFiddlerにも慣れることをお勧めします。

于 2011-11-07T15:27:07.590 に答える
1

私の知識によると、オブジェクトを渡す必要があります(DTOリクエスト)。ただし、jsonを使用して投稿リクエストを行うことができます。jsonリクエストを投稿する例が必要な場合は、https://github.com/ServiceStack/ServiceStack.Extras/blob/master/doc/UsageExamples/UsingRestAndJson.csをご覧ください。

于 2011-11-07T10:42:12.243 に答える