welcome to haddoddo place🤩

IT & Development & Daily Log

#Hi

개발/JAVA

[Spring Boot / STS] 스프링부트에 swagger 연동 및 사용법

haddoddo 2021. 1. 4. 00:10
반응형

 

안녕하세요 Haddoddo입니다.

저번 포스팅엔 스프링 이니설라이저를 통해 스프링 부트 프로젝트를 시작하는 포스팅을 작성하였는데요.

▶︎[Spring Boot / STS] 스프링 이니셜라이저로 스프링부트 시작하기

 

[Spring Boot / STS] 스프링 이니셜라이저로 스프링부트 시작하기

안녕하세요 Haddoddo입니다. 오늘은 스프링 이니셜라이저를 사용하여 STS에 스프링 부트 프로젝트를 쉽고 간단하게 세팅하는 방법에 대해 포스팅을 하도록 하겠습니다. 개발은 MAC환경에서 진행하

haddoddo.tistory.com

 

오늘은 스프링부트에 swagger를 연동하는 작업을 해보도록 하겠습니다.

 

프로젝트 환경..

Tool : STS
build : Maven

Language : Java
Spring Boot Version : 2.4.1
Packageing : Jar
JAVA Version : 8

 

그전에 swagger란 무엇일까요?

간단하게 말하면 API Spec 문서입니다. API를 관리하는 방법은 여러 가지가 있습니다.

엑셀이나 가이드 문서를 통해 관리하는 방법이 있지만 주기적으로 업데이트를 해줘 야하기 때문에 관리가 쉽지 않으며, 이런 문서작업은 시간이 오래 걸립니다.

그래서 swagger라는 API Spec 문서를 자동화해주는 오픈소스를 사용해 간편하게 API문서를 관리하면서 테스트를 해보도록 하겠습니다.

 

먼저 swagger를 사용하기 위해 pom.xml에 dependency를 추가해줍니다.

<!-- springfox-swagger2 -->
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>2.9.2</version>
</dependency>
<!-- springfox-swager-ui -->
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.9.2</version>
</dependency>

 

다음으로 SwaggerConfig.java를 생성해줍니다.

import java.util.HashSet;
import java.util.Set;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
	
	private ApiInfo apiInfo() {
		return new ApiInfoBuilder()
			.title("Demo")
			.description("API EXAMPLE")
			.version("1.0")
			.build();
	}
	
	private Set<String> getConsumeContentTypes() {
		Set<String> consumes = new HashSet<>();
		consumes.add("application/json;charset=UTF-8");
		consumes.add("application/x-www-form-urlencoded");
		return consumes;
	}
	
	private Set<String> getProduceContentTypes() {
		Set<String> produces = new HashSet<>();
		produces.add("application/json;charset=UTF-8");
		return produces;
	}
	
	@Bean
	public Docket commonApi() {
		return new Docket(DocumentationType.SWAGGER_2)
				.consumes(getConsumeContentTypes())
				.produces(getProduceContentTypes())
				.apiInfo(apiInfo())
				.select()
				.apis(RequestHandlerSelectors.any())
				.paths(PathSelectors.ant("/api/**"))
				.build();
	}

}

"paths(PathSelectors.ant("/api/**"))" 이 부분은 작성한 RequestMapping 하위만 보여주겠다는 의미입니다.

저는 /api 하위의 모든 API를 swagger에서 볼 수 있도록 설정하도록 하겠습니다.

Controller를 작성해줍니다.

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.haddoddo.roadmap.member.domain.Member;

import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping("/api")
public class mainController {
	
	ResponseEntity<?> entity = null;

	@ApiOperation(value="사용자 등록", notes="사용자 등록")
	@GetMapping(value="/register")
	public ResponseEntity<?> registerMember(String id,String name,String email) {
		Member member = new Member();
		member.setId(id);
		member.setName(name);
		member.setEmail(email);
		entity = new ResponseEntity<Member>(member, HttpStatus.OK);
		return entity;
	}
	
}

@ApiOperation 어노테이션은 swagger에서 사용하는 어노테이션으로 API의 간단한 설명을 적어주시면 되겠습니다.

 

그리고 DAO를 추가해줍니다.

public class Member {
	
	private String id;
	private String name;
	private String email;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
}

 

여기까지 작업 후http://localhost:8080/swagger-ui.html 로 이동해주도록 합니다.

 

등록한 사용자 등록 API를 선택 후 값을 입력해주도록 합니다.

지금은 강제로 응답 코드가 200으로 떨어지도록 하였지만 아래와 같이 파라미터가 제대로 전달되었다면 성공입니다.

 

여기까지 스프링 부트에 swagger를 사용하여 API Spac를 관리하는 예제를 작성해보았는데요.

다음 포스팅엔 H2 Database와 JPA를 연동하여 swagger를 사용하여 테스트를 하는 예제를 작성해보도록 하겠습니다.

 

 

◀︎이전글 ∙∙∙∙∙∙∙∙∙∙ 다음글▶︎

 

😁관련된 포스팅도 함께 읽어보세요.😁

▶︎[Spring Boot / STS] 스프링 이니셜라이저로 스프링부트 시작하기
▶︎[MySQL] MySQL Workbench 사용법 - 스키마 생성, 테이블 생성, CRUD(select, insert, delete, update)
▶︎[MAC] MAC에서 MySQLWorkbench(MySQL워크벤치) 설치, 사용법
▶︎[Homebrew] Mac에서 Tomcat & MySQL 설치, 설정하기
▶︎[Spring for MAC] STS 설치 & Hello world 찍어보자!

 

구독하기👍 눌러주시고 자주 놀러와 주세요.

공감 ,댓글⌨은 저에게 큰 힘이 됩니다.

감사합니다.🤗

.

.

.

🙏잘못된 정보의 피드백은 댓글 남겨주세요.🙏



 

반응형