1

多数の変数(約60)をWebサービスに渡したいのですが、これを実現するためのより良い方法があるかどうかを知りたいと思います。現在、私はGETを使用しており、URI(例:blahblah.com/People/ {person_id})を介してパラメーターを渡すことができます。これは、IDを渡すようなものに最適ですが、非常に多くの変数が含まれているように見えます。悪いと面倒になります。代わりにPOSTを実行することで、巨大なURLを作成せずに多くの変数を渡して、WebServiceにマッピングを処理させることができることを理解しています。これを実行したいのですが、[WebInvoke(...)]アノテーションでメソッド値をGETからPOSTに変更するだけで、「許可されていない」タイプのメッセージが表示されます。私が見逃している単純なものがあると確信しており、いくつかの洞察を得たいと思っています。また、

上記でサーバー側が明確にならなかった場合は、.NETFramework3.5を対象とするRESTfulWebサービスにVisualStudio2008でC#を使用しています。実際のコードはMyRestService.svc.csのような名前のファイルにあるため、アプリケーションは「Webサービス」であると思います。

クライアント側では、標準のHTML / CSS / JS / jQueryを使用しています(クライアント側ではaspxを使用していません)。サーバーからプルするには、$。getJSON()関数を使用しています。

あなたが私を助けるのに役立つかもしれない、私が省略している情報を教えてください。

見てくれてありがとう、

jnsohnumr

4

2 に答える 2

1

注釈を変更する[WebInvoke]と、サーバー側で正しくセットアップされますが、jQuery にブラウザーから GET を実行するように指示しているにすぎません。docsによると、 $.getJson は次の省略形です。

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

したがって、$.getJson 呼び出しを $.ajax への呼び出しに置き換えることができますが、POST を使用するように追加のパラメーターを使用できます。

$.ajax({
  url: url,
  type: 'POST', // Use POST instead of GET
  dataType: 'json',
  data: data, // A javascript object with fifty variables on it.
  success: callback
});

PS--Web リクエストで 50 個の変数を渡している場合は、そのリクエストを別の場所 (ユーザーのセッションなど) に使用している可能性があることを示しています。アプローチ全体を再考することをお勧めします。

于 2012-07-03T22:41:05.887 に答える
0

GET リクエストの場合、データをクライアント上の JS オブジェクトにきちんとパッケージ化しても、最終的にはfile.php?var1=1&var2=2etcとして送信されます。

これは問題ありませんが、次の点を除きます。

  • サーバーが「URLが長すぎます」というエラーコードで応答することがあります(実際のコードは忘れました)
  • ブラウザには URL の長さに独自の制限があります (たとえば、IE は 2083 文字、または少なくとも以前は 2083 文字でした)。

GET のセキュリティへの影響もありますが、GET をまったく検討している場合は、それを理解していると思います。

もちろん、POST はそのような問題を回避します。実際には、サーバーに POST を受け入れさせるのが最善の方法ですが、それがどの程度実行可能かはわかりません。

GET に戻る... C# はわかりませんが、PHP には、これらすべての着信変数を受け取り、それらを連想配列にパックする GET スーパーグローバルがあります。

$_GET; //array of incoming GET vars

C# に同様のものがない場合は、サーバー上の他の構造に逆シリアル化することをお勧めします。

このとりとめのないヘルパーの一部を願っています。

于 2012-07-03T22:35:16.903 に答える