[리팩토링] 스웨거 DTO 가 schema 에 보이지 않는 이유와 DTO 어노테이션 설정법

스웨거에서 왜 안뜨는 DTO 가 있는건지 의문이 들었다.

찾아보니

  • 스웨거에서의 DTO 에 표시되는 케이스는 컨트롤러에서 반환되거나 파라미터로 사용되는

    외부에 공개되는 DTO 의 경우에만 표시된다고 한다.

스웨거에서의 DTO 표기법


@Schema(description = "장바구니에 담긴 상품 수량을 변경하기 위한 요청 DTO")
public class CartProductUpdateRequestDTO {
    @NonNull
    @Schema(description = "장바구니 ID", example = "1", required = true)
    Long cartId;
    
    @NonNull
    @Schema(description = "상품 ID", example = "1", required = true)
    Long productId;
    
    @Schema(description = "수량", required = true)
    long quantity;
}
  • @Schema
    • 클래스 레벨에서의 Schema
      • 를 설정하였으나
      • DTO 스키마 이름이 이쁘게 변경되지 않는다..
    • 물론 내부적으로
      • 필수값표시, 태그이름, 예시값은 정확하게 동작하긴한다.

      이것도 찾아보니 DTO 등의 스키마 레벨의 경우, 별도 커스텀이 되지 않는다고 한다.

      • 혹시나 다른 방법이 있으면 알려주시면 감사하겠습니다.
  • @PositiveOrZero
    • 같은 validation 어노테이션으로
    • 정수값에 음수값이 들어가면 안되는 경우를 막을 수도 있다.
      @PositiveOrZero
      @Schema(description = "수량", required = true, example = "10", minimum = "0")
      long quantity;
      • 수량을 업데이트하는데 -1 ,-2 같은 값이 들어가면 안되는 경우 별도 설정할 수 있다.
  • 또한 @Schema 의 경우
    @PositiveOrZero
        @Schema(description = "수량", required = true, example = "10", minimum = "0")
        long quantity;
    • 같이 스웨거에 예시값이나 최솟값등을 지정도 가능하다.

Uploaded by N2T