Swagger / OpenAPI is used to automatically generate interactive API documentation for Spring Boot REST APIs.
Modern Spring Boot applications use SpringDoc OpenAPI.
http://localhost:8080/swagger-ui.html
or
http://localhost:8080/swagger-ui/index.html
Spring Boot Application
│
▼
SpringDoc OpenAPI Library
│
▼
Generates OpenAPI Specification (JSON)
│
▼
Swagger UI
│
▼
Interactive API Documentation
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.5.0</version>
</dependency>
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping
public List<String> getUsers() {
return List.of("John", "David", "Alice");
}
@PostMapping
public String createUser(@RequestBody String name) {
return "User created: " + name;
}
}
@Configuration
public class OpenAPIConfig {
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info()
.title("User Management API")
.version("1.0")
.description("Spring Boot REST API documentation using Swagger"));
}
}
| Annotation | Purpose |
|---|---|
| @Operation | Describes API endpoint |
| @Parameter | Describes request parameter |
| @ApiResponse | Documents response codes |
| @Tag | Groups APIs |
| @Schema | Defines model schema |
@RestController
@RequestMapping("/api/users")
@Tag(name = "User API", description = "Operations related to users")
public class UserController {
@Operation(summary = "Get all users")
@GetMapping
public List<String> getUsers() {
return List.of("John", "David", "Alice");
}
@Operation(summary = "Create a new user")
@PostMapping
public String createUser(@RequestBody String name) {
return "User created: " + name;
}
}
@Schema(description = "User entity")
public class User {
@Schema(description = "Unique ID of the user")
private Long id;
@Schema(description = "Name of the user")
private String name;
@Schema(description = "Email address")
private String email;
}
@Operation(summary = "Get user by ID")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "User found"),
@ApiResponse(responseCode = "404", description = "User not found")
})
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return new User(id, "John", "john@email.com");
}
| URL | Purpose |
|---|---|
| /swagger-ui.html | Swagger UI |
| /swagger-ui/index.html | Swagger UI (new versions) |
| /v3/api-docs | OpenAPI JSON specification |
| /v3/api-docs.yaml | OpenAPI YAML |
Swagger with Spring Boot enables automatic API documentation and interactive testing using SpringDoc OpenAPI.