Swagger

2024. 5. 9. 20:42TIL

✔오늘 배운 중요한 🔑 point

  • Postman과 Swagger같은 테스트 및 API 문서화를 위해 쓰는 도구는 현업에서 개발을 할때 작성한 API에 대한 정보를 프론트엔드 개발자 또한 알아야하기 때문에 이러한 도구들을 사용하는것이 중요하다

🎯 오늘 배운 내용

 

Swagger

우리가 작성하는 api를 테스트하기 위해서 사용하는 도구

 

Swagger 사용법

Swagger는 springdoc의 springdoc-openapi-starter-webmvc-ui package를 통해 적용할 수 있다

 

implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0")

build.gradle.kts 파일 안에 추가

 

실행결과  http://localhost:8080/swagger-ui/index.html

 

springdoc-openapi-starter-webmvc-ui  패키지를 dependency로 설정하면 기본적으로 bean이 등록이 되기때문에 이러한 화면창이 바로 보여진다

 

직접 bean을 등록하는 방법은 

bean등록을 위해서  SwaggerConfig class를 생성한 뒤

아래와 같은 코드를 작성하면

package com.teamsparta.courseregistration.infra.swagger

import io.swagger.v3.oas.models.Components
import io.swagger.v3.oas.models.OpenAPI
import io.swagger.v3.oas.models.info.Info
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration
class SwaggerConfig {

    @Bean
    fun openAPI(): OpenAPI = OpenAPI()
        .components(Components())
        .info(
            Info()
                .title("Course API")
                .description("Course API schema")
                .version("1.0.0")
        )
}

// SwaggerConfig.kt

 

  • @Configuration은  Spring application이 시작될때 이 클래스를 기반으로 컨테이너에 Bean들을 등록을 한다는 뜻
  • @Bean은 빈을 정의할때 사용하는 annotaion 뜻이며 openAPI()함수가 반환하는 객체가 Bean으로 등록됨
  • openAPI()는 OpenAPI 객체를 생성하고 반환하며
  •  .componenets(Components()): 생성된 OpenAPI 객체에  Components객체가 설정이 됨
  •  .info(): 생성된 OpenAPI 객체에 Info 객체가 설정이 됨,
  •  Info() : Info 객체를 생성하며 이 객체는 API의 정보를 나타냄, .title,.description, .version 등의 함수를 이용해서 각 API의 제목 설명 버전 등을 설정할수 있음

 

내가 직접 설정한 이름과 버전 등이 잘 적용이 된것을 확인 할 수있다.

 

 

 

🤔 어떻게 활용할까?

Swagger같은 도구는 API를 사용하는 방법을 명확하게 문서화하기때문에 프론트엔드 개발자와 같은 팀원들 간의 협업 측면에서도 매우 중요한 역할을 한다

📓 오늘의 한줄

"Some of us think holding on makes us strong, but sometimes it is letting go."

- Hermann Hesse -

 

 

'TIL' 카테고리의 다른 글

@Bean  (0) 2024.05.11
DI는 중요해  (0) 2024.05.10
Tactical Design & REST API  (0) 2024.05.08
Spring이란  (0) 2024.05.07
데이터 타입 런타임 에러  (0) 2024.05.06