반응형

Spring boot로 Rest API 만들기 간단 예제 (5)입니다.

전 편에서 Postman으로 확인했던 결과를 Swagger UI로 더 편리하게 확인해보겠습니다.


 

0. 이전 글 참고

[SPRING BOOT] REST API 간단 예제 - (1) 프로젝트 생성

[SPRING BOOT] REST API 간단 예제 - (2) DB, VO, DAO, XML

[SPRING BOOT] REST API 간단 예제 - (3) Service 만들기

[SPRING BOOT] REST API 간단 예제 - (4) Controller, Postman 출력

 

 

1. 환경

- Visual Studio Code : 1.61.2 version

- Spring boot : 2.5.7 version / gradle

- java 11

 

 

2. Swagger UI 환경설정

implementation 'io.springfox:springfox-swagger2:2.9.2'
implementation 'io.springfox:springfox-swagger-ui:2.9.2'

- build.gradle 파일에서 dependencies를 추가합니다.

 

plugins {
	id 'org.springframework.boot' version '2.5.7'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
	id 'war'
}

- 이 예제에서 Spring boot 버전을 2.6.2로 했었는데 2.6 버전에서 Swagger UI 오류가 있습니다.

- 그래서 저는 버전을 2.5.7 버전으로 수정했습니다.

 

 

3. SwaggerConfiguration.java

package com.test.demo.swagger;

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

import javax.servlet.ServletContext;

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 SwaggerConfiguration {

  @Bean
  public Docket SwaggerApi(ServletContext servletContext) {

    return new Docket(DocumentationType.SWAGGER_2)
                .consumes(getConsumeContentTypes())
                .produces(getProduceContentTypes())
                .apiInfo(swaggerInfo())
                .groupName("Test")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.test.demo.controller"))
                .paths(PathSelectors.ant("/**"))
                .build()
                .useDefaultResponseMessages(false);
  }

  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;
  }

  private ApiInfo swaggerInfo() {
    return new ApiInfoBuilder().title("Test API Documentation")
                .description("Swagger UI 간단 예제입니다.")
                .license("nana")
                .licenseUrl("https://nm-it-diary.tistory.com")
                .version("1.0")
                .build();
  }

}

- Swagger UI 설정 파일입니다.

- Docket을 만들어 컨트롤러를 지정하고, group 이름을 설정했습니다.

 

- swaggerInfo는 Swagger UI를 켰을 때, 상단에 보일 정보입니다.

- 위의 파일을 추가한 후, "http://localhost:8080/swagger-ui.html"에 접속합니다.

 

 

4. Swagger UI 화면 (http://localhost:8080/swagger-ui.html)

 

Swagger UI 화면

- Swagger UI 화면입니다.

- 위의 코드에 설정한 대로 정보들이 상단에 표시됩니다.

- group을 "Test"로 설정했기 때문에 오른쪽 상단 셀렉트 박스에 Test가 선택되어 있습니다.

 

- book-info-controller를 보면 컨트롤러에서 만들었던 get, post, put, delete가 모두 들어가 있습니다.

- 맨 하단에 있는 Models를 클릭해보면 우리가 만든 BookInfoVO 정보를 확인할 수 있습니다.

 

 

5. Swagger UI 결과 출력 방법

 

selectByKey 출력 화면

- 먼저, 오른쪽 상단에 "Try it out" 버튼을 클릭합니다.

- 파라미터가 있다면 파라미터 정보를 입력합니다.

- "Execute" 버튼을 클릭하면 postman과 같은 결과를 Responses에서 확인할 수 있습니다.

 

 

6. 다음 글 참고

[SPRING BOOT] REST API 간단 예제 - (6) Swagger UI 꾸미기

 

 

 

이상으로 Postman 보다 보기 편한 Swagger UI 설정 후, 출력 방법까지 알아보았습니다.


 

반응형