본문 바로가기
▶ Back-End/Java

Swagger 연동 및 설정 방법

by 오늘도 코딩 2023. 10. 18.
728x90
반응형

Spring Boot + Swagger 연동 방법과 간단한 설정 방법

*maven project에서 springdoc(swagger3)으로 진행

*자세한 설명 생략

 

 

▷ Swagger3 연동

*dependency 이후 바로 사용 가능

 

① pom.xml springdoc dependency

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.7.0</version>
</dependency>

 

 

▷ Swagger3 명세서 작성 방법

 

*Swagger3 주요 Annotation

태그 속성 설명
@Tag   Controller 명세
name API 그룹 명
description API 그룹 설명
@Operation   API 명세
summary API 설명
description API 상세 설명
@Schema   Model 명세
description Model 설명
defaultValue Model default value 지정

 

① Controller, API 명세

*@Tag, @Operation

 

/**
 * 피플 카운터 테스트 데이터 생성 Controller
 */
@Slf4j
@RestController
@RequestMapping("bhs")
@Tag(name = "MKD", description = "테스트 데이터 생성 서비스")
public class MKD1001Controller extends CmmController {

    @Autowired
    private MKDService mkdService;

    @PostMapping("/mkd/mkd1001.do")
    @Operation(summary = "BHS-MKD-1001", description = "피플 카운터 테스트 데이터 생성")
    public MKD1001ResVO mkd1001(@RequestBody MKD1001ReqVO reqVO, HttpServletRequest req) {

        MKD1001ResVO resVO = new MKD1001ResVO();

        try {
            /** 요청 값 체크 */
            if( !"0000".equals(fieldsCheck(req, reqVO, resVO).getResultCode()) ) { return resVO; };
            
            /** 피플 카운터 테스트 데이터 생성 */
            resVO = mkdService.getMKD1001(reqVO);
            
        } catch (Exception e) {
            resVO.ERR_9999();
            log.error("MKD1001 ERR Message :", e);
        }

        return resVO;
    }
}

 

② Model 명세

*@Schema

 

/**
 * 피플 카운터 테스트 데이터 생성 요청 VO
 */
@Getter
@Setter
@ToString
@Schema(description = "피플 카운터 테스트 데이터 생성 요청 VO")
public class MKD1001ReqVO extends CmmReqVO {

    /** 시작 날짜 */
    @JsonProperty("startDate")
    @Schema(description = "시작 날짜(yyyyMMdd)", defaultValue = "20230101")
    public String startDate;

    /** 종료 날짜 */
    @JsonProperty("endDate")
    @Schema(description = "종료 날짜(yyyyMMdd)", defaultValue = "20231231")
    public String endDate;

    /** 생성 개수 */
    @JsonProperty("loopCnt")
    @Schema(description = "생성 개수", defaultValue = "1")
    public Integer loopCnt;

}

 

Swagger-ui 설정 방법

*SwaggerConfig 파일 생성

*아래 소스는 Swagger UI에서  API를 그룹화하여 구분 

*많은 설정이 있지만 여기서는 OpenAPIDefinition , GroupedOpenApi 설정만 다룸

 

*@OpenAPIDefinition 사용 속성

태그 속성 설명
@Info   문서 설명
titile 문서 제목
version 문서 버전

 

* GroupedOpenApi 사용 속성

속성 설명
group 그룹 명(Swagger 문서 definition 명)
pathsToMatch 그룹에 속할 API URI Paths
pathsToExclude 그룹에서 제외할 API URI Paths

 

/**
 * Swagger3
 * 
 */
@OpenAPIDefinition
( info = @Info(title = "[행태분석 솔루션] API 명세서", version = "0.1"))
@Configuration
public class Swagger3Config {

    /** API Group */
    @Bean
    public GroupedOpenApi groupedOpenApi() {
        return GroupedOpenApi.builder()
                .group("v0.1-BehaviorAnalysis")
                .pathsToMatch("/**")
                // .pathsToExclude("/bhs/mkd/**")
                .build();
    }

    /** Test Data Make Group */
    @Bean
    public GroupedOpenApi mkdOpenApi() {
        return GroupedOpenApi.builder()
                .group("v0.1-MakeTestData")
                .pathsToMatch("/bhs/mkd/**")
                .build();
    }

}

 

 

▷ 결과 Swagger3 UI

*http://IP+포트/swagger-ui/index.html 

 

 

 

▷ 참고

 

[Java/Library] Swagger 이해하고 적용하기 : SpringDoc openAPI UI

해당 글에서는 Spring Boot 개발 환경에서 Swagger를 적용하는 방법에 대해서 설명합니다. 1) Swagger 💡 Swagger - RESTful 웹 서비스를 설계, 구축, 문서화 및 사용할 수 있는 오픈 소스 소프트웨어 프레임

adjh54.tistory.com

 

 

▷ 관련 글

 

Swagger 란?

시간 소요가 많고 관리하기 번거롭던 API 명세서 작성 작업을 Swagger를 통해 간단하게 해결 *자세한 설명 생략 ▷ Swagger 란? *OAS : Open API Specification API의 명세(Spec)를 문서화하여 관리하기 위한 프로

coding-today.tistory.com

 

Swagger3 JWT 인증 설정

Swagger UI에서 API 테스트 시 JWT 인증을 위한 추가 설정 *이전 글에 이어서 작업(관련 글 참고) *자세한 설명 생략 ▷ Swagger-ui 추가 설정 *@SecurityScheme 사용 속성 태그 속성 설명 @SecurityScheme 인증 스키

coding-today.tistory.com

 

 

728x90
728x90

'▶ Back-End > Java' 카테고리의 다른 글

Swagger UI Hangs on Big Json Respones 해결 방법  (0) 2023.10.18
Swagger3 JWT 인증 설정  (0) 2023.10.18
로그파일 생성과 관리(logback-spring.xml)  (2) 2023.10.17
요청 필드 값 공통 체크  (0) 2023.10.12
VERIFY JWT(nimbus)  (0) 2023.10.12

댓글