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