Вместо этого я столкнулся со следующими проблемами:
В браузере: «Не удалось загрузить определение API».
В консоли : 404 NOT_FOUND «Нет статического ресурса openapi/api-v1.0.yaml».
Когда я возвращаюсь к Spring Boot 3.3.7, все работает как положено, и пользовательский интерфейс Swagger загружается без любые ошибки.
Мои настройки:
Версия генератора OpenAPI: 7.10.0
Файл OpenAPI находится по адресу: src/main/resources/openapi/api-v1.0.yaml
Вот моя конфигурация пользовательского интерфейса Swagger (swagger-ui-config.js):< /p>
Код: Выделить всё
const ui = SwaggerUIBundle({
url: "/openapi/api-v1.0.yaml",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout",
oauth2RedirectUrl: window.location.protocol + "//" + window.location.hostname + ":" + window.location.port + "/swagger-ui/oauth2-redirect.html",
withCredentials: true
});
ui.initOAuth({
clientId: "boilerplate-oidc",
scopes: "arca role-ccx-irn76264",
usePkceWithAuthorizationCodeGrant: true
});
window.ui = ui;
}
Код: Выделить всё
main {
java {
srcDir file("${buildDir}/generated-api/src/main/java")
}
}
}
openApiValidate {
inputSpec = "$rootDir/src/main/resources/openapi/api-v1.0.yaml".toString()
}
openApiGenerate {
templateDir = "$rootDir/src/main/resources/openapi/templates".toString()
generatorName = "spring"
library = "spring-boot"
validateSpec = true
inputSpec = "$rootDir/src/main/resources/openapi/api-v1.0.yaml".toString()
outputDir = "$buildDir/generated-api".toString()
globalProperties = [
apis : "",
models : ""
]
configOptions = [
useSpringBoot3 : "true",
reactive : "true" ...
]
}
task packageDistributionApiV1(type: Zip) {
dependsOn("processResources")
description "Creating ZIP file for API contract"
archiveClassifier = 'api-v1.0'
from("$buildDir/resources/main/openapi/") {
include "api-v1.0.yaml"
}
}
assemble.dependsOn tasks.packageDistributionApiV1
tasks.openApiGenerate.dependsOn tasks.openApiValidate
compileJava.dependsOn tasks.openApiGenerate```
Проверил, что файл OpenAPI api-v1.0.yaml существует в правильное местоположение (src/main/resources/openapi/).
Проверил выходные данные сборки, чтобы убедиться, что файл упакован правильно.
Возвратился обратно к Spring Boot 3.3.7, и проблема исчезла.
Вопросы:
Изменился ли способ, которым Spring Boot обслуживает статические ресурсы, в версии 3.4.1?
Требуется ли дополнительная настройка для обслуживания файла OpenAPI в более новой версии?
Как исправить эту проблему, чтобы пользовательский интерфейс Swagger работал в Spring Boot 3.4.1?
Любые идеи или предложения будут рассмотрены очень признателен!
Подробнее здесь: https://stackoverflow.com/questions/793 ... enapi-yaml
Мобильная версия