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, используя пользовательский заголовок? Или как обновить приведенный выше код? Есть очень похожий вопрос, но я не нашел лучшего решения для моего вопроса.

0 ответов

Другие вопросы по тегам