2015-07-02 3 views
0

Просто запустив проект, который будет использовать множество конечных точек WebAPI, и у вас возникли вопросы о маршрутах. Поскольку существует множество методов с разными именами параметров, решение, о котором я думал, заключается в добавлении разных маршрутов с различными именами параметров.Многие маршруты ASP.Net WebAPI

Проблема заключается все методы, которые я определяю в различных классах ApiController имеет подпись, похожую на

public string SomeMethod(string token, string id); 
{ 
    //method body 
} 

Я хотел бы иметь другие методы с:

public string SomeMethod1(string token, string logType) 
{ 
    //method body 
} 
public string SomeMethod2(string token, string name) 
{ 
    //method body 
} ....etc 

Я хотел бы избежать необходимо определить каждый метод с именем параметра как «id», чтобы маршруты соответствовали и привязывались к соответствующему методу в классе ApiController.

Является ли приемлемой практикой добавлять много маршрутов в конфигурацию маршрутов WebAPI, так что различные параметры с различным именем параметра будут привязываться к правильному методу.

Это повлияет на общую производительность, если у меня много маршрутов в классе конфигурации?

Есть ли лучший способ достичь того, что я пытаюсь вытащить здесь?

ответ

1

Похоже, что ваша главная проблема заключается в компромиссе между a) необходимостью определения нескольких маршрутов по сравнению с b) одним маршрутом с именем параметра id. Хотя я сомневаюсь, что успех многих маршрутов - это большая сделка, я бы склонялся к определению одного маршрута ради меньшего количества кода. Вам не нужно вызывать параметр «id», но он должен быть одним и тем же. Возможно, что-то общее, как «аргумент»:

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{token}/{argument}", 
    defaults: new { controller = "Blah", action = "SomeMethod" }); 
+0

Спасибо за предложение. Но я создаю документацию, доступную другим пользователям, непосредственно вне кода. Было бы более разумно, если бы имена параметров были более релевантными для рассматриваемого контекста. – edocetirwi

+0

Если имена параметров являются приоритетом, то кажется, что ваш единственный вариант - это жестко закодировать имя действия, чтобы вы могли различать имена параметров. Это, конечно, приведет к определению маршрута за действие, но вы получите свой конечный результат. –

+0

Я изучал эту проблему и обнаружил, что WebAPI2 имеет маршрутизацию на основе атрибута, я думаю, что это то, что я ищу. – edocetirwi

Смежные вопросы