Asp.NET Web Api — несколько API/пространств имен

В моем веб-приложении MVC4 мне нужно поддерживать несколько API. Я осмотрелся и, по-видимому, в веб-API контроллеры с одинаковым именем в разных пространствах имен не поддерживаются.

Каковы мои варианты?

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

http://domainurl/api/api1/Students...
http://domainurl/api/api2/Students...

Студенческий ресурс в API1 может полностью отличаться от ресурса в API2. В таких случаях, что является лучшим подходом? Я не хочу делать это одним API и обрабатывать его через параметры URL.


person Brian    schedule 08.11.2012    source источник
comment
Ok. Похоже, это возможно через области, согласно ЭТОТ ПОСТ, но я не уверен, сколько настроек потребуется в моем случае. Любые более простые решения, пожалуйста, предложите.   -  person Brian    schedule 09.11.2012


Ответы (1)


Может быть, было бы лучше разделить 2 разных API на два разных проекта и заставить их беспокоиться о своих собственных API.

  • MyApi.V1.csproj
  • MyApi.V2.csproj

Затем IIS указывает на отдельные версии с помощью виртуального приложения.

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

person Max Alexander    schedule 21.02.2013
comment
Я считаю, что вы упускаете его точку зрения. Это не две версии одного и того же API (для которых ваше решение имело бы смысл), а два разных API, которые могут иметь общие (если не все) имена контроллеров. Маршруты MVC фактически поддерживают этот сценарий, указывая пространство имен в маршруте. - person Sebastien F.; 22.12.2013
comment
Ой. Я бы все равно просто разветвил/разветвил следующую версию и оставил сигнатуры контроллера V1 без изменений, за исключением исправления ошибок и т. д. V2 был бы продолжением. (Это только я, хотя...) - person Max Alexander; 23.12.2013