多个 C# WebAPI API 路由 - 将 API 方法限制为其中一个路由

Multiple C# WebAPI API routes - restrict API method to one of the routes

我的 API 赞

有多条路线
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{token}/{controller}/{action}",
    defaults: null,
    constraints: null,
    handler: HttpClientFactory.CreatePipeline(
                new HttpControllerDispatcher(config),
                new DelegatingHandler[] { new ApiTokenValidator() })
);
config.Routes.MapHttpRoute(
    name: "LoginApi",
    routeTemplate: "api/{controller}/{action}",
    defaults: null,
    constraints: null,
    handler: HttpClientFactory.CreatePipeline(
                new HttpControllerDispatcher(config),
                new DelegatingHandler[] { new ApiLoginHandler() })
);

如何确保我的 APIController 中的方法只能被例如 LoginApi route/handler 使用?

就像Uriil对问题的评论,答案是使用属性路由。

截至 http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#add-routes

在我的示例中,我这样使用它来限制 AddUser 方法仅用于 wordpress api

[Route("api/wordpress/shared/AddUser")]
[HttpPost]
public Object AddUser(string username)
{
}