Какова цель установки атрибута маршрута с версией для веб-API с использованием centralrouteprefix - PullRequest
0 голосов
/ 15 апреля 2019

Я настраиваю новый веб-API с помощью mvc, и один из вариантов настройки mvc - это «UseCentralRoutePrefix». в качестве параметра он принимает новый атрибут маршрута.

Во многих местах я вижу версию, настраиваемую для атрибута маршрута, как показано в строке:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(opt =>
    {
        opt.UseCentralRoutePrefix(new RouteAttribute("api/v{version}"));
    });
}

Может кто-нибудь объяснить мне значение {версии} в приведенном выше фрагменте кода.

1 Ответ

0 голосов
/ 15 апреля 2019

Прежде всего UseCentralRoutePrefix не существует "из коробки".Я думаю, что он предоставляется довольно многими людьми в качестве метода расширения с пользовательским RouteConvention, чтобы было удобно добавлять RoutePrefix централизованно.Идея в том, что вам не нужно отмечать все ваши методы контроллера префиксом, который вам может понадобиться.В вашем примере это api/v{version}

Что касается значения {version}, это параметр маршрута, он может быть любым в фигурных скобках.Это означает, что все ваши конечные точки ожидают параметр маршрута.Когда действие вызывается, этот параметр будет привязан к параметру версии.Итак, если имя вашего контроллера, например, ValuesController, и вы не определили RouteName для контроллера, ваша конечная точка будет api/v1/values

public class ValuesController : Controller
{
    public IActionResult GetValue(int version)
    {
        return new ContentResult { Content = version.ToString() };
    }
}

Если вы вызываете вышеуказанное действие, используя api/v1/values, результат будет 1. Надеюсь, это поможет.

Кроме того, параметр версии обычно используется, когда вы хотите включить управление версиями либо с помощью атрибута [ApiVersion] в методах действия, либо с помощью следующегокод в ConfigureServices метод

services.AddApiVersioning(options =>
        {
            var apiVersion = new ApiVersion(1, 0);

            options.ApiVersionReader = new UrlSegmentApiVersionReader();
            options.DefaultApiVersion = apiVersion;
            options.ReportApiVersions = true;
            options.AssumeDefaultVersionWhenUnspecified = true;
        });

Для более подробной информации о версии, пожалуйста, прочитайте здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...