这是路由定义:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{*data}",
defaults: new { data= RouteParameter.Optional }
);
现在,在产品控制器中,我定义了一个动作,如下所示:
public string Get(string data="")
{
return "value";
}
我http-get
使用以下 URL进行测试
api/product/
api/product/apple
两者都在工作
但是,如果我使用这个 URL
api/product/?p=5
它会抛出一个异常
No action was found on the `controller` 'product' that matches the request.
我知道我可以定义另一个像这样的动作来解决问题
public string Get(int p,string data="")
{
return "value";
}
但是,这对我不起作用,因为参数上的参数url
是不可预测的,无论是参数的名称还是参数的值。
所以,我的问题是
http-get
无论 URL 中使用哪种查询字符串,是否有一种方法可以定义单个操作来处理到达此控制器的所有请求?