BE/Java

Springboot3 + Swagger + Jwt (2)

jjuni_96 2024. 6. 20. 14:52
728x90

프로젝트 진행 이유 및 개발 환경

2024.06.20 - [BE/Java] - Springboot3 + Swagger + Jwt (1)

 

Springboot3 + Swagger + Jwt (1)

❔ 해당 프로젝트(?) 를 하게 된 이유로그인 기능 구현을 할 일이 있어서 작업을 하다가 한번도 JWT를 사용해본적이 없어서 공부 + 실무 적용을 위해 진행   ⚙️ 개발 환경JDKopenJDK 17Spring Boot3.3.0G

tistory.slowtuttle.co.kr

 

 

 

진행할 내용

1. Swagger 셋팅

 

 

 


Swagger란?

REST API 개발을 진행하는경우 Restful한 서비스를 만들때  @RestController를 읽어서 API 문서를 자동으로 생성해주고, API를 테스트 할 수 있는 UI를 제공하는 라이브러리

간편하게 사용할 수 있다는 장점이 있지만, 운영서버와 같은 환경에서는 외부로 노출되면 안되기 때문에 주의를 해야한다.

 

 


Swagger 종류

- Springfox

Spring 프레임워크를 사용하는 로젝트에서 Swagger를 사용할 수 있게 해주는 라이브러리.

3.00 버전을 기준으로 마지막 업데이트가 중단 (Maven Repository 기준 대략 2020년 7월)

 

 

- Springdoc

Spring 프레임워크를 사용하는 로젝트에서 Swagger를 사용할 수 있게 해주는 라이브러리.
webflux 라는 방식의 웹 개발을 지원하도록 개발되어있다.
yml 파일 설정을 통해 그룹 간 API 정렬이 가능하다.(가나다순, abc순)

 

 

위의 두가지 선택지중 버전업을 계속 하고있는 Springdoc을 사용하기로 결정!

 

 

 


Swagger 적용하기

Springdoc Swgger 3.0.0 적용

공식문서 : https://springdoc.org/

 

OpenAPI 3 Library for spring-boot

Library for OpenAPI 3 with spring boot projects. Is based on swagger-ui, to display the OpenAPI description.Generates automatically the OpenAPI file.

springdoc.org

 

1. build.gradle 의존성 추가

   - 당연한 얘기지만 의존성 추가 후 gradle reload를 해줘야함 (간혹 reload를 안하고 안된다는 분들이 있기때문에..)

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'

 

1. application.yml 의존성 추가

- application.properties보다 보기 편해서 yml로 작성

springdoc:
  api-docs: #api 설정
    path: /api   # api엔드포인트 설정
    groups: #그룹핑
      enabled: true
  swagger-ui:  #swagger ui 설정
    path: /swagger.html #swagger 접속 경로
    enabled: true
    groups-order: ASC #정렬
    tags-sorter: alpha #태그정렬기준
    operations-sorter: alpha #api정렬기준
    display-request-duration: true
    doc-expansion: none #tag 리스트 펼치기
  cache:
    disabled: true
  model-and-view-allowed: true
  default-produces-media-type: application/json
  default-consumes-media-type: application/json

 

3. SwaggerConfig.java 등록

package org.jjuni.swaggerjwt.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@RequiredArgsConstructor
public class SwaggerConfig {

    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("Springboot+Swagger+JWT")
                        .version("1.0")
                        .description("초기 구축 셋팅 과정을 기록하는 swagger 입니다."));
    }
}

- 간혹 INFO 부분에서 에러가 나는 경우가있는데, intellij에 해당 라이브러리를 한번에 import 하지 못하는듯함.

아래 import가 잘 되어있는지 확인하자!!

import io.swagger.v3.oas.models.info.Info;

 

 

 

이제 localhost:8080/swagger.html 로 접속하면 기본 페이지가 뜬다.

 

 

 

 

추가적으로 필요한 내용들은 작업하면서 추가할 예정!

 

 

 

 

 

refs

dependency 참조 사이트 : https://colabear754.tistory.com/130

 

 

[Swagger] Spring Boot 3.0.X 버전에서 Swagger UI 접속 시 404 에러가 발생할 때

목차 문제의 배경 JPA 공부를 위해 스프링부트 프로젝트를 생성할 때 새로운 버전을 사용해보자는 마음으로 스프링부트 3.0.3 버전으로 프로젝트를 생성했다. 그리고 평소처럼 Springdoc의 스웨거 UI

colabear754.tistory.com

설정파일 참조 사이트 : https://beforb.tistory.com/166

 

[Swagger3] 1. springdoc-openapi를 이용한 Swagger3 설정하기(+Swagger 옵션)

Swagger 기본 설정 및 Swagger에서 제공하는 기본 옵션에 대해 알아보자! 1) build.gradle dependencies 안에 openapi-ui 추가 //swagger implementation 'org.springdoc:springdoc-openapi-ui:1.7.0' 2) application.yaml springdoc: api-docs: pa

beforb.tistory.com

 

728x90
반응형
LIST