Endpoint
从 获得的 是否包含EndpointDataSource
任何可识别该路线为 的信息ApiController
?
XY:我想要一个要求除 API 控制器之外的IMiddleware
所有请求都使用 cookie 的请求。目前,我正在测试请求路径是否以“/api”开头,但我想知道是否有更强大/解耦的方法来识别与 API 控制器路由匹配的路径。
Endpoint
从 获得的 是否包含EndpointDataSource
任何可识别该路线为 的信息ApiController
?
XY:我想要一个要求除 API 控制器之外的IMiddleware
所有请求都使用 cookie 的请求。目前,我正在测试请求路径是否以“/api”开头,但我想知道是否有更强大/解耦的方法来识别与 API 控制器路由匹配的路径。
MetadataCollection
返回的列表包含endpoint.Metadata
不同的条目,具体取决于端点是 API 路由还是 Razor Page 路由。通过检查是否包含特定类
MetadataCollection
,您可以确定端点的类型。Endpoint
MetadataCollection
Microsoft.AspNetCore.Mvc.ApplicationModels.PageRouteMetadata
Razor Page 路由在其 中包含类型条目MetadataCollection
。API 路由永远不会包含此条目。Microsoft.AspNetCore.Mvc.Routing.HttpMethodAttribute
API 路由将在其MetadataCollection
列表中包含类型条目。检测 API 端点
该类
HttpMethodAttribute
定义如下:列表
MetadataCollection
可以包含 类型的条目endpoint.Metadata.OfType<Microsoft.AspNetCore.Mvc.RouteAttribute
。但是,只有当端点用 修饰时,此条目类型才会出现[Route("api/mymethod")]
。并非所有 API 端点都Route
设置了属性,因为Route
可以在 级别设置属性Controller
。检测 Razor Page 路由
该类
PageRouteMetadata
定义如下: