[SpringBoot] Swagger ui 설정 방법.

carlkim·2023년 10월 19일
0

[SpringBoot] Swagger ui 설정 방법.
• build.Gradle에 의존성 추가
• application.yml 에 코드 추가
• OPEN API 어노테이션 활용
• 어노테이션 정리
build.Gradle에 의존성 추가
// swagger-ui(OpenApi)
implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.6.11'
application.yml 에 코드 추가
springdoc:
default-consumes-media-type: application/json
default-produces-media-type: application/json
swagger-ui:
operations-sorter: alpha
tags-sorter: alpha
path: /swagger-ui.html
disable-swagger-default-url: true
display-query-params-without-oauth2: true
OPEN API 어노테이션 활용
@TAG
@Operation 어노테이션 활용하기
오퍼레이션 어노테이션으로 API 기능이 무엇인지 정의해줄 수 있다.
@RestController
@Slf4j
@RequestMapping(value = "/api") // /api 가 모든 url에 공통
@CrossOrigin(origins = "*") // 프론트앤드와 통신 CORS 문제 해결
@Tag(name = "Board API", description = "OSC KOREA BOARD API")
public class BoardApiController {

@Autowired // DI 생성 객체를 가져와 연결.
private ArticleService articleService;

// FinAll Get
@GetMapping(value = "/boards")
@Operation(summary = "글 리스트 출력", description = "테이블에 있는 모든 데이터를 출력")
public List

index() {
return articleService.index();
}

// Get by id
@GetMapping(value = "/boards/{id}")
@Operation(summary = " 개별 글 출력", description = "테이블에 있는 개별 데이터를 출력")
public Article findArticle(@PathVariable Long id) {
    return articleService.findArticle(id);
}

}
application.yml에 지정한 주소로 들어가보면 API를 정리한 문서를 볼 수 있다.
http://localhost:8080/swagger-ui/index.html#/

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

@Operation
api 상세 정보 설정을 위한 어노테이션입니다.
summary 속성으로 api에 대한 간략한 설명, description 속성으로 api에 대한 상세 설명을 추가할 수 있으며, responses, parameters 속성 등을 추가로 적용할 수 있습니다.

@ApiResponses
바로 아래에서 설명하는 여러 개의 @ApiResponse를 묶기 위한 어노테이션입니다.

@ApiResponse
api의 response 설정을 위한 어노테이션입니다.
responseCode 속성으로 http 상태 코드를 설정할 수 있고, description으로 response에 대한 설명을 추가할 수 있습니다. @ApiResponse 설정을 통해 응답 결과로 나올 수 있는 response 구조를 미리 확인할 수 있게 됩니다.
api 조회 성공 및 실패 시 발생될 상태 코드 및 Response 구조를 설정하고자 할 때 유용하게 사용될 수 있습니다.
(implementation에는 responseBody로 제공될 클래스 타입만 설정할 수 있습니다.)

@Parameter
예시에는 없지만 해당 어노테이션은 api parameter 설정을 위한 어노테이션입니다.
name으로 파라미터의 이름, description으로 설명, in으로 파라미터의 위치를 설정할 수 있습니다.

profile
기본부터 가면 됩니다.

0개의 댓글