본문 바로가기
[SpringBoot]

SpringBoot Swagger 연동

by Hevton 2022. 12. 13.
반응형

localhost:8080/swagger-ui.html 

Swagger는

프론트엔드와 백엔드가 협업하는데 사용되는 아아 주우 좋은 툴이다.

 

Swagger를 적용하는 방법엔 두 가지가 있는데

 

1. Spring-Fox

2. Spring-Doc

 

1은 이제 지원을 안해서, Doc을 쓰는게 좋다.

 

 

dependency를 추가해준다 (참고로 나의 SpringBoot 버전은 2.7.6)

implementation 'org.springdoc:springdoc-openapi-ui:1.6.6'

 

 

config 파일을 생성해준다.

 

package com.test.admin.config;

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

@Configuration
public class Swagger2Config {

    @Bean
    public GroupedOpenApi publicApi() {
        return GroupedOpenApi.builder()
                .group("그룹 이름")
                .pathsToMatch("/**") // -> /v1/** 으로 하면, http://localhost:8080/v1/~~ 을 모두 매칭시킨다.
                .build();
    }
    @Bean
    public OpenAPI springShopOpenAPI() {
        return new OpenAPI()
                .info(new Info().title("타이틀")
                        .description("설명")
                        .version("v0.0.0"));
    }
}

 

여기까지만 설정해놓고
localhost:개인포트/swagger-ui.html 로 접속해보면, 모든 것이 자동적으로 설정되어 있음을 확인할 수 있다.

기본적으로 localhost:8080/swagger-ui.html 일 것이고, 포트를 변경한 사람은 8080이 아닐 수 있다.

 

 

Request와 Response 모두 자동으로 세팅되어 불러지는 것을 볼 수 있다.

 

여기까지만 해도 통신 규약을 교환하는데에 문제가 전혀 없다. 하지만 프론트와 조금 더 수월하게 소통하고 싶다면

여기서 세부 설명을 추가적으로 작성하는 방법이 있다.

Controller 파일에서 진행한다.

 

 

@Tag와 @Operation을 추가한다.

package com.test.admin.controller;


import com.test.admin.entity.User;
import com.test.admin.service.UserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Tag(name = "Users", description = "유저 API")
@RestController
@RequiredArgsConstructor
@RequestMapping("/users")
public class UserController {

    private final UserService userService;

    @Operation(summary = "Create User")
    @PostMapping("")
    public User register(@RequestBody User newUser) {
        return userService.register(newUser);
    }


    @Operation(summary = "Find all User")
    @GetMapping("")
    public List<User> findAll() {
        return userService.findAll();
    }


    @Operation(summary = "Find user by Name")
    @GetMapping("/name/{name}")
    public List<User> find(@PathVariable String name) {
        return userService.findByName(name);
    }
}

이렇게 세부 설명들이 추가된 것을 확인할 수 있다.

Request나 Response, 내부적으로 바뀐 것은 없다. 주석이 추가된 거라고 생각하면 된다.

 

 

참고

SpringBoot 스웨거 연동

(https://velog.io/@jeong-god/Spring-boot-Swagger-API-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0)

 

반응형