Swagger 사용하기

2024. 12. 4. 21:06·Dev

Swagger

  • API 문서화 자동화 툴
  • 어떤 API가 있고 해당 API를 쓰기 위한 양식을 알려주고 API를 호출해보고 테스트 할 수 있다.
  • 프론트에서 API를 쉽고 빠르게 이해하기 위해 활용한다.

SpringDoc

  • Swagger UI를 만들고 Swagger annotation을 제공하는 라이브러리이다.
  • SpringFox UI와 SpringDoc UI가 있는데 spring의 버전이 올라갈수록 SpringFox는 지원을 못하는 경우가 많다.

dependency 설정

implementation 'org.springdoc:springdoc-openapi-ui:1.6.15'

Swagger Configure 작성

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import io.swagger.v3.oas.models.Components; 
import io.swagger.v3.oas.models.OpenAPI; 
import io.swagger.v3.oas.models.info.Info; 
@Configuration 
public class OpenApiConfig { 
/** * OpenAPI bean 구성 * @return */
@Bean public OpenAPI openAPI() { 
    Info info = new Info() 
                    .title("swagger 테스트") 
                    .version("1.0") 
                    .description("API에 대한 설명 부분"); 
       return new OpenAPI() .components(new Components()) .info(info); 
    } 
}

Swagger 관련 annotation

  • annotation을 이용하면 API의 설명, 매개변수, 반환형 등의 메타 데이터를 기술할 수 있다.
    • Swagger는 JavaDoc을 이용해서 API 메타 데이터를 읽고, 메타 데이터를 Swagger UI에 제공한다.
  • Spring framework의 기본 annotation만 사용해도 Swagger UI를 만들 수 있지만 디테일한 정보를 표기할 때 annotation을 사용한다.
  • import io.swagger.v3.oas.annotations 라이브러리에 있는 annotaion 사용

@Tag

  • Domain 단위로 API를 그룹화할 때 사용 Controller class에 annotation 작성

예시:

@RestController  
@Tag(name = "User",description = "유저 Domain")

Operation

  • 어떤 리소스를 나타내는지 간략한 설명 추가할 수 있다.
  • 예시:
    @GetMapping("/users/login) 
    @Operation(summary ="로그인 API ", description = "클라이언트 요구사항 적기 " )

@ApiResponse

  • 해당 API의 Response 정보들을 나타낼수 있다.
  • ApiResponse가 여러개일 때 @ApiResponses로 묶어서 표현

예시 :

@ApiResponses({
          @ApiResponse(responseCode = "COMMON200",description = "OK, 성공"),
          @ApiResponse(responseCode = "AUTH003", description = "access 토큰을 주세요!",content = @Content(schema = @Schema(implementation = ApiResponse.class))),
          @ApiResponse(responseCode = "AUTH004", description = "acess 토큰 만료",content = @Content(schema = @Schema(implementation = ApiResponse.class))),
          @ApiResponse(responseCode = "AUTH006", description = "acess 토큰 모양이 이상함",content = @Content(schema = @Schema(implementation = ApiResponse.class)))})

@Parameter

  • API의 parameter에 대한 설명을 위한 annotation이다.

예:

@Parameter(name = "userId", description = "유저의 아이디입니다.")

@Schema

  • Request, Response 객체에 대한 설정을 위한 annotation이다.
  • description으로 설명을 추가할 수 있고 defaultValue로 기본적으로 사용할 값 설정할 수 있고 example을 통해 예시 설정 가능
    @Getter
    @AllArgsConstructor
    public static class ApiResponse {
      @Schema(description = "성공")
      private String success;
      @Schema(description = "토큰")
      private String token;
    }

'Dev' 카테고리의 다른 글

fcm 이용해서 앱 푸쉬 구현  (0) 2024.12.04
소켓 통신(채팅방 구현)  (0) 2024.12.04
OCR로 영수증 데이터 가져와서 식품 데이터 분류하기(분류 모델 만들기) + Trouble shooting  (0) 2024.12.04
ElasticSearch로 검색 성능 높이기  (0) 2024.12.04
Spring Security, JWT로 인증, 인가 구현하기  (0) 2024.01.13
'Dev' 카테고리의 다른 글
  • 소켓 통신(채팅방 구현)
  • OCR로 영수증 데이터 가져와서 식품 데이터 분류하기(분류 모델 만들기) + Trouble shooting
  • ElasticSearch로 검색 성능 높이기
  • Spring Security, JWT로 인증, 인가 구현하기
khjoon
khjoon
  • khjoon
    기록기록
    khjoon
  • 전체
    오늘
    어제
    • 분류 전체보기 (37)
      • Security (2)
      • Dev (14)
      • Infra (12)
      • Ops (9)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
khjoon
Swagger 사용하기
상단으로

티스토리툴바