Issue
I'm trying to generate interfaces from Open-API specification and I have a Gradle plugin:
implementation(
"org.springdoc:springdoc-openapi-ui:1.5.12",
"org.openapitools:openapi-generator-gradle-plugin:5.3.0"
)
def apiFile = "$rootDir/src/main/resources/openapi/api.yml"
task buildOpenApi(type: GenerateTask) {
generatorName = "spring"
inputSpec = apiFile
outputDir = "$buildDir/generated"
groupId = "$project.group"
id = "$project.name-java-client"
version = "$project.version"
apiPackage = "com.example.my.api"
modelPackage = "com.example.my.model"
configOptions = [
interfaceOnly: "true",
openApiNullable: "false",
skipDefaultInterface: "true"
]
globalProperties = [
apis: "",
models: ""
]
enablePostProcessFile = true
skipOverwrite = false
}
compileJava.dependsOn(buildOpenApi)
sourceSets.main.java.srcDirs = ['build/generated/src','src/main/java']
And have an api.yml file that is located in src/main/resources/openapi/api.yml. When I run ./gradlew clean compileJava, it generates me correct interfaces to the build directory, so I can implement them. But when I launch my application and go to http://localhost:8080/swagger-ui.html I see swagger automatically generated from my controller classes, but not from api.yml file - I mean, it doesn't have any descriptions, examples and so on
How to make swagger built from my api.yml file, not from controller source code?
Solution
The correct way is not to expect swagger from implemented interfaces, but build it from api.yml file. This config in application.yml helped me:
springdoc:
api-docs:
enabled: false
path: /api-docs
swagger-ui:
disable-swagger-default-url: true
url: /api.yml
path: /api-docs
Now swagger available at localhost:8080/api-docs
Answered By - Alexey
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.