0

У меня есть несколько маршрутов для моего API, какМножественные C# WebAPI API маршрутов - Ограничить метод 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?

+0

Укажите его в ограничениях, или маршрутизации атрибут использования. Это то, что вам нужно? – Uriil

+0

Порядок, в котором вы создаете сопоставления. У вас должно быть ваше «DefaultApi» как последнее определенное сопоставление. – Padraic

+0

@ Уриэль, как бы вы это использовали в моем случае, когда я хочу ограничить метод только одним из отображений? – Jacob

ответ

1

Как 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) 
{ 
}