web api 2 - как сделать версии API более элегантными
То, что я хочу, это что-то вроде следующего кода:
[VersionedRoute("api/user"), 1]
public class UserV1Controller : ApiController
{
[HttpGet]
[Route("aa")]
public int GetVal()
{
return 111;
}
}
[VersionedRoute("api/user"), 2]
public class UserV2Controller : ApiController
{
[HttpGet]
[Route("aa")]
public int GetVal()
{
return 222;
}
}
Главное, я хочу, чтобы приведенный выше код работал так же, как Routeprefix с Route, они так удобны. Я знаю, что могу удалить атрибут "Маршрут" в приведенном выше коде, если есть только один метод для каждого глагола http, но это не очень хорошая идея, потому что я думаю, что во многих случаях мы будем использовать больше методов в одном контроллере. Теперь я должен написать много дублированного кода, используя versionedRoute везде с номером версии:
public class UserV1Controller : BasePublicController
{
[HttpGet]
[VersionedRoute("api/user/aa", 1)]
public int GetVal()
{
return 111;
}
[HttpGet]
[VersionedRoute("api/user/bb", 1)]
public int GetInfo()
{
return 123;
}
}
Есть ли лучшая реализация для версии веб-API, используя пользовательский заголовок? Или как обновить приведенный выше код? Есть очень похожий вопрос, но я не нашел лучшего решения для моего вопроса.