카테고리 없음

Spring Swagger 3 적용

lovineff 2021. 3. 19. 17:30

build.gradle 파일내 의존성 추가

implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.5.2'

 

Configuration 추가 (yml 설정으로 대체 가능)

@Configuration
public class SwaggerConfig{
    // 아래 설정은 설정 yml 파일에 선언 가능하나 설정파일이 너무 길어지므로 class에 선언한다.
 
    // OpenApi 기본 설정
    @Bean
    public OpenAPI springShopOpenAPI() {
        return new OpenAPI()
                .info(new Info().title("API")
                        .description("API application")
                        .contact(new Contact().name("name"))
//                        .license(new License().name("Apache 2.0").url("http://springdoc.org"))
                )
//                .externalDocs(new ExternalDocumentation()
//                        .description("Wiki Documentation")
//                        .url("http://")
//                )
                ;
    }
 
    // api 버전별 url 설정(api 버전 변경시 아래 빈 설정을 추가한다)
    @Bean
    public GroupedOpenApi apiV1() {
        return GroupedOpenApi.builder()
                .group("api-version-1")
                .pathsToMatch("/**")    // 처리될 url
                .pathsToExclude("/test/**", "/test2/**")   // 제외 url
                .build();
    }
}

 

프로잭트 빌드 및 재시작

 

접근 URL

lswagger-ui.htmlswagger-ui.html

 

 

컨트롤러내 설정법

자세한 사용법은 공식 홈페이지의 문서를 참고한다.

@Tag(name = "abc 컨텐츠 조회, 생성")
@Slf4j
@RequiredArgsConstructor
@RestController
@RequestMapping("/abc")
public class AbcController {
    @Operation(
            summary = "요약"    	// API 요약
            , description = "설명"// API 선택시 보여주는 설명
    )
    @Parameters({
        @Parameter(name = "abc", description = "컬럼 설명", required = true)
    })
    @ResponseBody
    @PostMapping("/post/url")
    public DeferredResult<Integer> postUrl(@RequestBody Abc abc) {
    	// ...
    }
}