路由ASP.NET Web API 2中的别名

本文关键字:别名 API ASP NET Web 路由 | 更新日期: 2023-09-27 18:00:37

我有一个Web API,它允许用户访问/操作"属于"其他用户的资源。它包含许多类似的路线:

/users/{userId}/resource

我想要一组相应的路由,它们代表当前经过身份验证的用户执行相同的操作:

/resource

理想情况下,我希望在不将控制器中的操作次数增加一倍的情况下让第二组路由正常工作,但我很难找到合适的钩子。理想情况下,我想添加一个MessageHandler(或其他东西),它会拦截每个请求,检查它是否与路由匹配,如果不匹配,则在路由中添加"users/"+已验证用户的ID,然后再次检查。实现这一目标的最佳方法是什么?

一个限制:我使用属性路由来实现第一组路由,理想情况下,我希望在不牺牲这一点的情况下实现这一点。

路由ASP.NET Web API 2中的别名

钩子是操作选择器,您可以在这里看到:ASP.NET Web API中的路由和操作选择。

您可以实现自己的操作选择器来实现您想要的内容。下面是一个关于如何做到这一点的示例:MagicalWebneneneba API操作选择器。来自同一页面:

我们将创建一个实现IActionSelector的类,因为这将允许我们插入Web API在GlobalConfiguration.Configuration.Services.下提供的挂钩