次のメソッドがあり、filters パラメーターはキーと値のペアの 2 次元配列です。少し調査した後、Post メソッドの方が理にかなっているようですが、メソッドを投稿に書き換えるにはどうすればよいですか?
[WebGet(UriTemplate = "/tools/data/getall?tool={tool}&filters={filters}")]
public JsonArray GetAll(string tool, string filters)
{
}
上記のメソッドを投稿するように変更するには、以下のようになります。
[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"}
}
}
ノート:
キーと値のペアが int,string であると仮定します
POST メソッドがある場合、クエリ文字列はサポートされません。
また、メソッド名がタスクを実行するサーバー上のリソースを示す REST プリンシパルに従って有効になるように、メソッドの名前を変更します。WebInvoke 属性を持つ GetAll メソッドは適切な方法ではありません。
WebInvoke のデフォルトのメソッドは「POST」であるため、明示的に指定していません。
投稿するには、 を で に変更する必要WebGet
がWebInvoke
あり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)