justsicklife
Spring boot Rest Api Web 프로젝트 따라하기 (1) swagger 연동 본문
GitHub - justsicklife/springboot_RestApi_Web_Project
Contribute to justsicklife/springboot_RestApi_Web_Project development by creating an account on GitHub.
github.com
build.gradle
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
의존성에 이걸 추가해주자
SwaggerConfig 클래스
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
public class SwaggerConfig {
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.components(new Components())
.info(apiInfo());
}
private Info apiInfo() {
return new Info()
.title("Springdoc 테스트")
.description("Springdoc을 사용한 Swagger UI 테스트")
.version("1.0.0");
}
}
일단 위코드를 작성하고 http://localhost:8080/swagger-ui/index.html 에 접속해보자
어노테이션과 메서드에 대해 살펴보면
@Bean 은 반환하는 객체를 스프링 IOC 에서 관리하는 빈(스프링에서 관리하는 객체를 빈이라고함) 으로 만들어줌
@Configuration @Bean 으로 지정된 객체를 싱글톤으로 만들어줌
info 생성자 API에 대한 메타데이터 작성 객체
title 제목
description 내용
version 버전
UserController
import com.restApi.restApiSpring.demo.Service.UserService;
import com.restApi.restApiSpring.demo.dto.User;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Tag(name= "예제 APi", description = "Swagger 테스트용 API")
@RestController
@RequiredArgsConstructor
public class UserController {
final UserService userService;
@Operation(summary = "모든 회원 조회", description = "모든 회원 목록을 조회합니다.")
@GetMapping("/users")
public List<User> findAllUser() {
return userService.findAll();
}
@Operation(summary = "회원 저장" ,description = "이름 과 이메일을 받아 저장합니다.")
@PostMapping("/user")
public int save(@Parameter(name = "email",required = true)
@RequestParam String email,
@Parameter(name = "name", required = true)
@RequestParam String name) {
User user = User.builder()
.email(email)
.name(name)
.build();
return userService.save(user);
}
@Operation(summary = "회원 검색 (이름)" , description = "이름으로 회원을 검색합니다.")
@GetMapping("/users/name/{name}")
public List<User> findUserByName(@Parameter(name = "name",required = true) @PathVariable String name) {
return userService.findByName(name);
}
@Operation(summary = "회원 검색 (이메일)",description = "이메일로 회원 검색합니다.")
@GetMapping("/users/email/{email}")
public User findUserByEmail(@Parameter(name = "email",required = true) @PathVariable String email) {
return userService.findByEmail(email);
}
}
Swagger 관련 어노테이션
@Tag 컨트롤러에 name 과 description 을 작성할수있다.
@Operation api에 summary 와 description 을 작성할수있다.
@Parameter api에서 받는 파라미터를 정의할수있다.
만약 매게변수가 객체라면 @ParameterObject 를 사용하자
일단 위 코드를 작성하고 http://localhost:8080/swagger-ui/index.html 여기에 들어가서 보면 바로 이해할것이다.
User
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@Builder
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "유저 dto")
public class User {
@Schema(description = "유저 아이디")
private Long userId;
@Schema(description = "유저 이메일")
private String email;
@Schema(description = "유저 이름")
private String name;
}
@Schema 를 정의할수있다
'프로젝트' 카테고리의 다른 글
Spring boot Rest Api Web 프로젝트 따라하기 (2) Rest API 설계 (0) | 2024.04.27 |
---|---|
Spring boot Rest Api Web 프로젝트 따라하기 (1) 환경 구성 (0) | 2024.04.18 |
React + Spring Boot 다키스트 던전 공략 사이트 제작기 (1) | 2024.04.14 |
spring boot + react 로 게시판 만들기 세팅편 (0) | 2024.01.20 |