0

次のメソッドがあり、filters パラメーターはキーと値のペアの 2 次元配列です。少し調査した後、Post メソッドの方が理にかなっているようですが、メソッドを投稿に書き換えるにはどうすればよいですか?

[WebGet(UriTemplate = "/tools/data/getall?tool={tool}&filters={filters}")]
public JsonArray GetAll(string tool, string filters)
{
}
4

2 に答える 2

2

上記のメソッドを投稿するように変更するには、以下のようになります。

[WebInvoke(UriTemplate = "/tools/data/SearchAll")]
public JsonArray SearchAll(string tool, Dictionary<int,string> filters)
{
}

上記のメソッドの requestBody は、次のようになります (Fiddler を使用して調べることができます)。

{
"tool": "enter the value of tool parameter", 
"filters" : 
 {
  {"Key":1,"Value":"Test"},
  {"Key":2,"Value":"Test1"}
 }
}

ノート:

  1. キーと値のペアが int,string であると仮定します

  2. POST メソッドがある場合、クエリ文字列はサポートされません。

  3. また、メソッド名がタスクを実行するサーバー上のリソースを示す REST プリンシパルに従って有効になるように、メソッドの名前を変更します。WebInvoke 属性を持つ GetAll メソッドは適切な方法ではありません。

  4. WebInvoke のデフォルトのメソッドは「POST」であるため、明示的に指定していません。

于 2012-04-10T13:52:34.953 に答える
1

投稿するには、 を で に変更する必要WebGetWebInvokeありMethodますPOST。クエストの本文を使用して変数を渡すには、Serializable オブジェクトをパラメーター リストに追加するだけです。したがって、 がある場合は、Dictionary<string,string>メソッドを次のように変更します

[WebInvoke(Method = "POST", UriTemplate = "/tools/data/getall?tool={tool}&filters={filters}")]
public JsonArray GetAll(string tool, string filters, 
                        Dictionary<string,string> whatever)
于 2012-04-10T13:42:21.020 に答える