스프링부트 스웨거3

2024. 5. 1. 16:40카테고리 없음

 

[Swagger] Open API 3.0 Swagger v3 상세설정

※ 실습 프로젝트는 Github에서 확인 할 수 있습니다.

jeonyoungho.github.io

스웨거3 어노테이션

 

OpenAPI 3 Library for spring-boot

Library for OpenAPI 3 with spring boot projects. Is based on swagger-ui, to display the OpenAPI description.Generates automatically the OpenAPI file.

springdoc.org

springdoc openAPI3 Swagger 공식문서

 

[Spring Boot] Springdoc 라이브러리를 통한 Swagger 적용

목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.7 Kotlin 1.7.21(JDK 11) Springdoc Openapi UI 1.6.11 Springdoc은 무엇인가? 이전에 Spring Boot 프로젝트에 Swagger UI를 적용하는 포스트를 작성한 적이 있다. 해당 포

colabear754.tistory.com

springdoc openAPI3 Swagger

 

 

[Packy] Swagger @ApiResponses를 커스텀 어노테이션으로 대체하기

1. @ApiResponses의 한계 Swagger에서 정상 응답값과 함께 에러 응답값도 명시해주어야 클라이언트 단에서도 에러 응답값에 대한 예외 처리를 할 수 있다. Swagger에서는 기본적으로 아래와 같이 @ApiRespon

leeeeeyeon-dev.tistory.com

ApiResponse 커스텀하기 1

 

 

[스프링] spring swagger 같은 코드 여러 에러 응답 예시 만들기

[스프링] error code 도메인 별 분리하기 두둥 프로젝트에서는 처리중에 에러가 발생할경우 RuntimeException 을 상속받은 DuDoongException 에서 다시 상속받아서 코드별 에러클래스를 만들고 있다. @Getter @A

devnm.tistory.com

ApiResponse 커스텀하기 2

@ApiResponse(
               responseCode = "200",
               description = "이미 회원가입을 했던 유저인 경우",
               content = @Content(
                    schema = @Schema(implementation = ErrorResponseDTO.class))

 

스웨거에서는 각 메서드에 어노테이션을 읽어 api 명세서를 구성한다.

하지만 위의 방법대로 api의 반환 타입을 설정하면 ErrorResponseDTO에 설정한 어노테이션에 따른 한가지 예시밖에 안나온다.

 

따라서 여러 컨트롤러에 대한 모든 예제를 넣으려면 다른 방식으로 이를 설정하여야한다.

 

동작과정

1. error Enum을 정의함.

2. 커스텀 어노테이션으로 런타임 시점에 어떠한 errorEnum 인지 정보를 받음.

3. public OperationCustomizer customize()을 통해 각 메소드에 어노테이션 정보를 필터링함. (우리가 미리 정의한 커스텀 어노테이션 확인하기)

4. errorEnum 데이터를 보고 ExampleHolder List를 구성함.

5.  ExampleHolder List로 mediaType 객체를 구성하고 content에 mediaType을 설정함. ApiResponse에 content로 추가함.

 

참고 *

customize()에서 반환하는 operation에서 .getResponse()로 ApiResponses 객체를 얻을 수 있는데 여기에 ApiResponse객체를 추가하면 예제가 추가됨.

 

 

커스텀하기 위한 지식. 어노테이션과 리플랙션

 

Reflection과 Annotation

Reflection이란? 객체를 통해 클래스의 정보를 분석해내는 프로그램 기법입니다. 기본적으로 제공하는 자바의 API이다. 자바의 Reflection은 클래스, 인터페이스, 메서드들을 찾을 수 있고, 객체를 생

upperleaf.tistory.com