Прежде всего 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;
});
Для более подробной информации о версии, пожалуйста, прочитайте здесь