如何在Web API中过滤基于结果的url参数?

时间:2013-10-17 19:23:54

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

我有WebAPI网址(http://localhost:5134/api/TechDisci/00026),它会为用户00026返回多个TechDisciplines。 /TechDisci/是控制器名称,Get方法返回JSON数据。

JSON数据在结果集中具有主要和次要值。现在,用户希望通过传递此类网址

,使用primarysecondary对其进行过滤

http://localhost:5134/api/TechDisci/00026/primaryhttp://localhost:5134/api/TechDisci/00026/secondary

我的java家伙能够使用这种网址。如何在WebAPI中处理samethig?

1 个答案:

答案 0 :(得分:1)

您可以在控制器中将“primary”和“secondary”作为操作(方法)名称。然后,您将需要添加一个新路由(在Application.WebApiConfig类中)。

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}/{action}"
);

或者“primary”和“secondary”是同一方法的参数。然后你可以添加这条路线

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}/{priority}",
    defaults: new { priority = RouteParameter.Optional }
);

在这种情况下,您需要为Get方法添加一个接受两个参数(id,priority)的重载

在这两种情况下,在主路线之前添加路线,以防万一它是第一个匹配的路线。