OpenAPI Specification
"The OpenAPI Specification, originally known as the Swagger Specification, is a specification for machine-readable interface files for describing, producing, consuming, and visualizing RESTful web services." - Wikipedia. Often OpenAPI specification acts as documentation for developers. It helps UI and Backend developers to work side by side.
Release date: January 2021 | Spring Boot: 2.4.x | Revision: 1
Action: OpenAPI
Enable OpenAPI
Springfox provide good support to auto generate OpenAPI specification.
They have spring boot starter io.springfox:springfox-boot-starter
library for spring boot project.
To enable OpenAPI do the following.
-
Include version information at
gradle.properties
.gradle.propertiesprojectName=Brain Station 23 Bank # openApiVersion=3.0.0
-
Include springfox starter at
build.gradle
.build.gradledependencies { compileOnly "io.springfox:springfox-boot-starter:${openApiVersion}" }
-
Enable spring boot build properties through gradle build configuration to
build.gradle
. After enabling spring boot build properties, spring boot will generatebuild-info.properties
inside the.jar
which is accessible during runtime. We will use build properties to dynamically generates OpenAPI information (e.g. project name, version or any custom information).build.gradlespringBoot { buildInfo { properties { name = projectName } } }
-
Add java configuration to override default configurations.
OpenApiConfiguration.java@Configuration @ConditionalOnClass(OpenApiAutoConfiguration.class) public class OpenApiConfiguration { private final BuildProperties buildProperties; public OpenApiConfiguration(BuildProperties buildProperties) { this.buildProperties = buildProperties; } @Bean public Docket api() { return new Docket(DocumentationType.OAS_30) .groupName(buildProperties.getName() + " " + buildProperties.getVersion()) .select() .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) .paths(PathSelectors.any()) .build() .apiInfo( new ApiInfoBuilder() .title(buildProperties.getName() + " API") .description(buildProperties.getName() + " REST API") .version(buildProperties.getVersion()) .license("© Brain Station 23 Ltd.") .licenseUrl("https://brainstation-23.com") .contact( new Contact( "Md. Rezaul Hasan", "https://brainstation-23.com/", "reza@bs-23.net")) .build()); } }
-
Now OpenAPI specification will be accessible at http://localhost:8081/swagger-ui/index.html It will look like the bellow.
Learn More
-
Official Springfox Documentation
Project Code
-
Github - OpenAPI Specification