0

我有以下方法,过滤器参数是键值对的二维数组。经过一番研究后,一个 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。要使用 quest 的主体传递变量,您只需将 Serializable 对象添加到参数列表中。所以,如果你有一个,改变你的方法是MethodPOSTDictionary<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 回答