将Id和String传递给Web API Get

时间:2012-09-21 20:57:36

标签: c# asp.net-mvc asp.net-web-api

我正在使用New MVC Web Api我有这样的事情:

    public class CustomersController : ApiController
    {
  public HttpResponseMessage Get()
        {
            //Return Somethings
        }
    }

我用/ api / customers

来称呼它

现在我希望能够按国籍和身份进行过滤,所以我做了这个:

public class CustomersController : ApiController
{
    public HttpResponseMessage Get(int Id, String Nat)
    {
        //and i filter here Return Somethings
    }
}

如果我尝试使用/api/customers/1/us它调用第一种方法,我知道这些是查询字符串,那么如何定义路由以便我可以使用/api/customers/1/us

1 个答案:

答案 0 :(得分:4)

这样的事情可以解决问题

routes.MapHttpRoute(
     name: "CustomersByIdAndNat",
     routeTemplate: "api/customers/{Id}/{Nat}/",
     defaults: new { controller = "Customers" }
);

作为旁注,/1/us不是查询字符串。 Querystring是网址上?符号后面的内容。例如,在你的情况下,可能是这样的

api/customers/?id=1&nat=us

不是说您需要更改网址格式,只是解释这个概念。