ASP.NET Web API 2 中的路由别名
Route Aliases in ASP.NET Web API 2
我有一个 Web API,允许用户 access/manipulate 资源 "belong" 给其他用户。它包含许多与此类似的路线:
/users/{userId}/resource
我想要一组代表当前经过身份验证的用户执行相同操作的相应路由:
/resource
理想情况下,我希望在不将控制器中的操作数量加倍的情况下让第二组路由正常工作,但我正在努力寻找合适的钩子。理想情况下,我想添加一个 MessageHandler (或其他东西)来拦截每个请求,检查它是否与路由匹配,如果不匹配,则将 "users/" + 经过身份验证的用户的 ID 添加到路由并检查再次。实现此目标的最佳方法是什么?
一个约束:我正在使用 属性路由 来实现第一组路由,理想情况下希望在不牺牲它的情况下实现它。
钩子是动作选择器,如您在此处所见:Routing and Action Selection in ASP.NET Web API。
您可以实现自己的动作选择器来实现您想要的效果。以下是有关如何执行此操作的示例:Magical Web API action selector。来自同一页面:
We will create a class that implements IActionSelector, as that would allow us to plug into the hook provided by the Web API under GlobalConfiguration.Configuration.Services.
我有一个 Web API,允许用户 access/manipulate 资源 "belong" 给其他用户。它包含许多与此类似的路线:
/users/{userId}/resource
我想要一组代表当前经过身份验证的用户执行相同操作的相应路由:
/resource
理想情况下,我希望在不将控制器中的操作数量加倍的情况下让第二组路由正常工作,但我正在努力寻找合适的钩子。理想情况下,我想添加一个 MessageHandler (或其他东西)来拦截每个请求,检查它是否与路由匹配,如果不匹配,则将 "users/" + 经过身份验证的用户的 ID 添加到路由并检查再次。实现此目标的最佳方法是什么?
一个约束:我正在使用 属性路由 来实现第一组路由,理想情况下希望在不牺牲它的情况下实现它。
钩子是动作选择器,如您在此处所见:Routing and Action Selection in ASP.NET Web API。
您可以实现自己的动作选择器来实现您想要的效果。以下是有关如何执行此操作的示例:Magical Web API action selector。来自同一页面:
We will create a class that implements IActionSelector, as that would allow us to plug into the hook provided by the Web API under GlobalConfiguration.Configuration.Services.