📘 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);
}
}