API 문서를 자동으로 만들어주는 라이브러리이다. Swagger는 단순한 문서 뿐만 아니라 매개변수를 넣어가면서 실행 할 수 있다.
🔍 좀 더 자세하기 설명하면
예를 들어, 우리가 spring으로 어플리케이션을 제작했고, 여기엔 유저 리스트를 가져오는 기능과 게시글을 등록하는 기능이 있다고 하자
/api/users로 유저 리스트를 가져오기/api/posts로 게시글을 등록하기라는 기능이 있다고 생각하자. 이 때, 이런 것들을 누가, 어떻게 쓰는지 문서화 하고 이것들을 테스트도 해야 한다. 이 때, Swagger가 자동으로 이런 작업을 도와주는 것이다.
build.gradle에 springdoc-openapi를 추가해주면 된다.

⚠️ 주의할 점
버전이 잘 맞는지 꼭 확인하기
: 처음에 springdoc-openapi 2.2.0 버전을 사용했다. 그런데 계속 fetch error가 발생했다.

내가 사용하는 spring boot 3.4.4 버전에 맞는 버전을 찾아서 사용했다. 혹시나 오류가 발생한다면 권장하고 있는 버전을 잘 매치해서 사용하고 있는지 한 번 확인해보면 좋다. 
공식문서에서 답변한 부분 https://springdoc.org/faq.html#_what_is_the_compatibility_matrix_of_springdoc_openapi_with_spring_boot
packages-to-scan : 어느 패키지에서 API를 찾을지 알려주는 설절으로 이 패키지 안에 있는 Controller 클래스만 Swagger 문서에 나타난다.default-consumes-media-type : 요청에서 어떤 타입의 데이터를 받을지 설정하는 것default-produces-media-type : 응답에서 어떤 타입의 데이터를 응답할지 설정하는 것springdoc:
packages-to-scan: com.dbwls.restapi.section05
// json 형식의 데이터를 UTF-8로 요청
default-consumes-media-type: application/json;charset=UTF-8
// json 형식의 데이터를 UTF-8로 응답
default-produces-media-type: application/json;charset=UTF-8
Info : Swagger UI 상단에 표시될 정보를 설정하는 객체 OpenAPI : Swagger 에서 사용하는 스펙을 설정하는 객체 @Configuration
public class SwaggerConfig {
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.info(swaggerInfo());
}
private Info swaggerInfo() {
return new Info()
.title("dbwls API") // 문서 제목
.description("SpringBoot Swagger 연동 테스트") // 문서에 대한 설명
.version("1.0.0"); // 문서 버전
}
}
이런식으로 문서를 확인할 수 있다.
위에 Info()에서 설정한 내용이 잘 적용된 것을 확인할 수 있다.

밑에 내용이 내가 Controller에 설정한 부분이다.
이 부분을 보면 /swagger/users와 /swagger/users/{userNo} 라는 부분이 swagger 문서에 잘 추가된 것을 확인할 수 있다.

🤔 밑에 테스트를 진행하기 전에 각각의 어노테이션들은 무슨 의미일까?!
controller를 보면 @Tag, @Operation 같은 어노테이션이 붙어있는 것을 볼 수 있다.
@Tag : API들을 그룹으로 묶고, Swagger UI에서 보기 쉽게 분류@Operation : 각 API에 제목과 설명을 붙여서 Swagger 문서에 더 자세한 정보 제공밑에 사진을 보면 @Tag안의 내용이 적혀 있는 것을 볼 수 있다. 그리고 endpoint쪽에 summary내용이 있는 것과 endpoint들을 펼쳤을 때 descripton 내용이 있는 것을 볼 수 있다.
swagger에서는 테스트를 진행할 수 있는데 이렇게 parameter를 입력하면,
이런식으로 요청이 잘 처리되어 응답이 확인되는 것을 볼 수 있다. 1번 회원은 홍길동이었고 밑에 잘 적용되어 있다.

이렇게 Swagger를 이용하면 API문서 부터 테스트까지 한 번에 확인하고 실행할 수 있다.