У меня есть. NET Core Web API с управлением версиями. В настоящее время существует 2 версии, и рабочие пути в 2 файлах swagger выглядят примерно так:
/api/v1/Versioning/List (v1 swagger)
/api/v2/Versioning/List (v2 swagger)
В Azure DevOps есть конвейер сборки, который генерирует 2 файла swagger с помощью PowerShell:
`dotnet swagger tofile --output pathToV1Json MyApplication.dll v1`
и
`dotnet swagger tofile --output pathToV2Json MyApplication.dll v2`
и сохраняет их в артефакте. В конвейере выпуска я использую задачу управления Create or Update Versioned API
API для создания / обновления моего API в Azure API Management, используя эти сгенерированные файлы swagger.
Пока все хорошо, все работает, как ожидалось . Но на этапе выпуска к URL-адресу добавляется еще одна часть версии, как и следовало ожидать. Итак, в моих последних операциях API в Управлении API URL-адрес выглядит примерно так:
.../v1/api/v1/Versioning/List (v1 swagger)
.../v2/api/v2/Versioning/List (v2 swagger)
Я пытался отредактировать сгенерированные пути операций в файлах swagger, используя IDocumentFilter, и это работает, но также ломает интерфейс Swagger. Есть ли способ изменить эти рабочие пути, но только при создании фактического файла Swagger?
Итак, в моем IDocumentFilter я мог бы иметь что-то вроде этого:
public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{
var openApiPaths = new OpenApiPaths();
foreach (var path in swaggerDoc.Paths)
{
if ([generating actual swagger file])
{
openApiPaths.Add(path.Key.Replace("/v1", ""), path.Value);
}
else
{
openApiPaths.Add(path.Key, path.Value);
}
}
swaggerDoc.Paths = openApiPaths;
}