✔️ Spring Boot 3.0 이하 버전
springfox-boot-starter
를 추가하여 사용implementation 'io.springfox:springfox-boot-starter:3.0.0'
localhost:8080/swagger-ui/
로 Swagger 페이지에 접근할 수 있다.✔️ Spring Boot 3.0 이상 버전
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
localhost:8080/swagger-ui/index.html
로 Swagger 페이지에 접근할 수 있다.아래 예시의 어노테이션들이 해당 범위(클래스, 메소드 등)에 제한되어 사용되는 것은 아님
Config
@Configuration
public class OpenApiConfig {
@Bean
public OpenAPI openAPI(@Value("${springdoc.version}") String springDocVersion) {
Info info = new Info()
.title("Swagger 테스트 API")
.version(springDocVersion)
.description("Swagger 사용 방법에 대한 테스트 입니다.")
.contact(new Contact().name("chris").email("chris@gmail.com").url("https://myWebsite.com"));
return new OpenAPI()
.components(new Components())
.info(info);
}
}
Controller
@Tag(name = "API Controller", description = "API 정보를 제공하는 Controller")
@RestController
@RequestMapping("/api")
public class SwaggerController {
...
}
Method
@GetMapping("/plus/{x}")
@Operation(operationId = "plus", summary = "더하기 메소드", description = "더하기 메소드 입니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Successful Operation", content = @Content(schema = @Schema(implementation = int.class))),
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(schema = @Schema(implementation = int.class)))
})
public int plus(@PathVariable @Parameter(name = "x", description = "x 값", in = ParameterIn.PATH, example = "10") int x,
@RequestParam @Parameter(name = "y", description = "y 값", in = ParameterIn.QUERY, example = "20") int y) {
return x + y;
}
DTO
@Data
public class UserRequest {
@Schema(description = "이름", defaultValue = "testId", requiredMode = Schema.RequiredMode.REQUIRED, example = "steve")
private String name;
@Schema(description = "나이", defaultValue = "1", requiredMode = Schema.RequiredMode.REQUIRED, example = "30")
private int age;
}
참고 Reference