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)
'[SpringBoot]' 카테고리의 다른 글
JPA 설명 -1 / JDBC (0) | 2022.12.15 |
---|---|
SpringBoot 간단 실습 - 5 Controller, CRUD 단위 테스트 (0) | 2022.12.14 |
SpringBoot NginX 연동 (MAC local) (0) | 2022.12.13 |
WAS WebServer (Feat. SpringBoot, NginX, Node.js) (0) | 2022.12.13 |
SpringBoot GitHub 연동하기 (0) | 2022.12.11 |