如何通过查询字符串将多个参数传递到Web api控制器

时间:2014-05-15 07:09:00

标签: asp.net-web-api

我正在研究一直使用.Net远程处理系统进行通信的遗留系统。现在我想编写新的客户端和服务器端web-api代码来执行相同的操作。 这是我正在处理的示例代码:

public SearchResult Search(Condition condition,Sort sort,PageInfo pageInfo)
{
......
}

我希望能够使用相同的签名进行web-api操作,从而获得其Uri的值,因此:

[HttpGet()]    
public SearchResult Search([FromUri]Condition condition,[FromUri]Sort sort,[FromUri]PageInfo pageInfo)
        {
        ......
        }

以下是我的问题:

  1. 是否可以在web-api中进行此类操作?
  2. 如果是,我如何使用HttpClient传递这些参数?

1 个答案:

答案 0 :(得分:3)

您可以设置Route属性以接受任意数量的参数。

[Route("/api/search/{condition}/{sort}/{pageInfo}")]
[HttpGet]
public HttpResponseMessage Search( string condition, string sort, string pageInfo) {
    ...
}

这意味着您的网址从中更改 ?/搜索条件=试验&安培;排序=第一和安培; pageInfo = 5

/搜索/测试/第一/ 5

或者,将Condition,Sort和PageInfo对象捆绑到单个Json类中,并将此对象传递给您的路径:

[Route("/api/search/{SortParams}")]
[HttpGet]
public HttpResponseMessage Search( object sortParams) {
    // deserialize sortParams into C# object structure
}

看一下这个问题:C# .net how to deserialize complex object of JSON