📘 Web/Spring, JPA

[SpringBoot] SpringBoot에 Swagger(SpringDoc) 적용

a n u e 2023. 7. 13. 13:17

 

 

springdoc-openapi-ui 라이브러리를 이용해보았다. 

 


1. build.gradle에 dependencies 추가

dependencies {
 	...
	implementation 'org.springdoc:springdoc-openapi-ui:1.6.14'
}

 

 

2. application.properties에 추가

# swaggerdoc
springdoc.packages-to-scan=com.osstem.ow.online
springdoc.swagger-ui.version=v1.0.0
springdoc.swagger-ui.path=/api-docs
springdoc.swagger-ui.tags-sorter=alpha
springdoc.swagger-ui.operations-sorter=alpha
springdoc.api-docs.path=/api-docs/json
springdoc.api-docs.groups.enabled=true
springdoc.cache.disabled=true

springdoc.packages-to-exclude:
springdoc.paths-to-exclude:

springdoc.default-consumes-media-type=application/json;charset=UTF-8
springdoc.default-produces-media-type=application/json;charset=UTF-8

 

 

3. config 파일 생성

@Configuration
class SwaggerConfig {
    @Bean
    public openAPI() openAPI(@Value("${springdoc.swagger-ui.version}") String springdocVersion) {
    	Info info = new Info()
        	.title("타이틀 입력")
        	.version(springdovVersion)
        	.description("API에 대한 설명");
        return new OpenAPI()
        	.components(new Components())
        	.info(info);
        }
}

 

 

4. Controller에서 API를 정의 

@Tag(name = "서비스 name", description = "~ 서비스 api 입니다.")
@RestController
@RequestMapping("/api/test")
public class TestController {

    @Operation(summary = "~ 기능 메서드", description = "~ 기능 메서드입니다.")
    @ApiResponses(value = {
        @ApiResponse(responseCode = "200", description = "Success", content = @Content(schema = @Schema(implementation = Test.class))),
        @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(schema = @Schema(implementation = Error.class)))
    })
    @Parameter(name = "param", description = "테스트용 param")
    @GetMapping("/test/userId/{userId}")
    public ResponseEntity<Test> getTest(@Parameter(description = "테스트용 param")String param){
        return new ResponseEntity(service.selectTest(param), HttpStatus.OK);
    }
 }