Web API中间的可选参数

Onu*_*mus 8 routing asp.net-web-api asp.net-web-api2

我有以下路由映射或WEB API

[Route("Foo/Id/{id=1}/bar")]
Run Code Online (Sandbox Code Playgroud)

我想让Id可选如上所述但是从客户端无论我称之为路线不匹配我得到404我试试像

Foo/Id//bar
Run Code Online (Sandbox Code Playgroud)

但是不起作用.如果参数不在最后,是否可以使用web api的可选参数?

小智 0

您不能在 URL 中使用 //。实现您想要的功能的唯一方法是为一个端点映射 2 条路由。例如

config.Routes.MapHttpRoute(
   name: "BarRoute",
   routeTemplate: "Foo/Id/{id}/bar",
   defaults: new { controller = "Foo" });

config.Routes.MapHttpRoute(
   name: "BarDefaultRoute",
   routeTemplate: "Foo/Id/bar",
   defaults: new { controller = "Foo" });
Run Code Online (Sandbox Code Playgroud)