Swagger3

circle-info

참고

Swagger3 Site (https://springdoc.org/) Swagger3 Sample Site: https://beta-venus-api-sample.x2bee.com/api/sample/swagger-ui/index.html#/

다음은 Swagger3에 대해 다룹니다.

Swagger3 버전에서의 어노테이션 변경점과 자바 소스 내에서 작성 방법에 대해 설명합니다.


설명

스프링 부트 3.0부터는 기존에 사용하던 swagger2 스펙 springfox-swagger2을 지원하지 않고, 새롭게 swagger3 스펙인 springdoc-openapi를 지원합니다.

기존에 swagger2 사용하던 어노테이션은 모두 사용할 수 없으며, 새롭게 변경된 swagger3의 어노테이션을 사용해야 합니다.

어노테이션 변경 (중요)

다음은 Swagger2 -> Swagger3(설명용) 어노테이션 매핑입니다.

@ApiParam           -> @Parameter  
@ApiOperation       -> @Operation
@Api                -> @Tag
@ApiImplicitParams  -> @Parameters
@ApiImplicitParam   -> @Parameter
@ApiIgnore          -> @Parameter(hidden = true) or @operation(hidden = true) or @hidden
@apimodel           -> @Schema
@ApiModelProperty   -> @Schema

컨트롤러 관련 어노테이션 (요약)

  • @Tag

    • 설명: API 그룹 설정을 위한 어노테이션입니다. name 속성으로 태그의 이름을 설정할 수 있고, description 속성으로 태그에 대한 설명을 추가할 수 있습니다. @Tag에 설정된 name이 같은 것 끼리 하나의 API 그룹으로 묶입니다.

    • 속성 예: name, description

    • 예제:

  • @Operation

    • 설명: api 그룹 설정을 위한 어노테이션입니다.name 속성으로 태그의 이름을 설정할 수 있고, description 속성으로 태그에 대한 설명을 추가할 수 있습니다.

      @Tag에 설정된 name이 같은 것 끼리 하나의 api 그룹으로 묶게 됩니다.

    • 예제:

  • @ApiResponses / @ApiResponse

    • 설명: @ApiResponse를 그룹화하거나 단건으로 사용하여 response 설정을 합니다. responseCode로 HTTP 상태 코드를 설정하고 description으로 설명을 추가합니다. content의 schema 또는 implementation으로 응답 바디 구조를 지정할 수 있습니다.

    • 주요 속성: responseCode, description, content (schema, hidden, implementation)

    • 예제(여러개):

    • 예제(단건):

  • @Parameters / @Parameter

    • 설명: @Parameter를 그룹화하거나 단건으로 사용해 API 파라미터를 정의합니다. name, description, in(query|header|path|cookie), required, schema 등을 설정할 수 있습니다.

    • 예제(여러개):

    • 예제(단건):

Request / Response 객체 관련 (@Schema)

  • @Schema

    • 설명: Request, Response 객체(DTO)에 대한 설정을 위한 어노테이션입니다. description, defaultValue, example, allowableValues 등을 설정할 수 있습니다.

    • 주요 속성: description, defaultValue, allowableValues, example, nullable, maxLength 등.

    • 예제:

    • @Schema로 할당된 DTO들은 Swagger UI의 Schemas 섹션에 추가되어 확인할 수 있습니다.

Swagger 설정 예시

  • OpenAPI Bean 설정 예제:

Swagger3 Controller 예시

  • @Tag 사용 예:

  • @Operation, @ApiResponses 사용 예:

    또 다른 예:

Request/Response DTO 예시 파일들

  • @ Schema 위치

@schema 어노테이션 할당시, 페이지 하단의 Schemas에 추가되어 확인 가능합니다.

  • @Schema-description, example

ctpNmParam 클릭시, 다음과 같이 확인 ( String example description )

@Schema example 작성시, req parameter 로 설정합니다.

  • @Schema - defaultValue, allowableValues

defaultValue @Schema defaultValue 설정가능하며 example과 마찬가지로 req parameter 로 설정합니다.

allowableValues @Schema allowableValues 작성시 허용값을 열거형으로 확인 가능합니다.

마지막 업데이트