ASP.NET 核心通配符路由除外
ASP.NET Core wildcard route except
我正在使用 ASP.NET Core 来提供这样的 SPA:
[<Route("{*url}")>]
member this.Index () =
this.View("~/wwwroot/Index.cshtml")
我的 JSON 端点在同一个应用程序上,路由如下:
[<Route("api/something/{somethingId:int})>]
这工作正常,除了当我尝试调用端点时 api/something/that/doesnt/exist
当我真正想要 404 时我得到了索引页面。
是否可以设置 [<Route("{*url}")>]
以排除任何以 "api" 开头的 url?
你应该使用 Route Constraints。有一个正则表达式选项,您可以使用它来过滤掉 API 调用(您不想要的)。
然后你需要做一个否定的前瞻来否定一个字符串。
[<Route("{*url:regex(^(?!api).*$)}")>]
我正在使用 ASP.NET Core 来提供这样的 SPA:
[<Route("{*url}")>]
member this.Index () =
this.View("~/wwwroot/Index.cshtml")
我的 JSON 端点在同一个应用程序上,路由如下:
[<Route("api/something/{somethingId:int})>]
这工作正常,除了当我尝试调用端点时 api/something/that/doesnt/exist
当我真正想要 404 时我得到了索引页面。
是否可以设置 [<Route("{*url}")>]
以排除任何以 "api" 开头的 url?
你应该使用 Route Constraints。有一个正则表达式选项,您可以使用它来过滤掉 API 调用(您不想要的)。
然后你需要做一个否定的前瞻来否定一个字符串。
[<Route("{*url:regex(^(?!api).*$)}")>]