spring boot + swagger3 연동하기

Gyuhan Park·2022년 10월 7일
0

spring

목록 보기
18/18

swagger3 의존성 추가

// build.gradle
dependencies {
	implementation 'io.springfox:springfox-boot-starter:3.0.0'
}

spring boot + swagger 라이브러리 오류해결

// application.properties
spring.mvc.pathmatch.matching-strategy=ant_path_matcher

swagger configuration 클래스 생성

controller에서의 작업과 상관없이 이 파일만으로 swagger 화면을 띄울 수 있다.

package spring.airbnb.config;

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;

// swagger 접속 : http://localhost:8080/swagger-ui/index.html

@Configuration
public class SwaggerConfiguration {

    @Bean
    public Docket swaggerApi() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(swaggerInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("spring.airbnb.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo swaggerInfo() {
        return new ApiInfoBuilder()
                .title("Spring API Documentation")
                .description("앱 개발시 사용되는 서버 API에 대한 연동 문서입니다")
                .version("1")
                .build();
    }
}

controller

controller에서는 swagger에서 볼 정보들을 추가할 수 있다.
@Api(tag = {""}) : 제목
@Operation(summary = "", description = "") : api 기능과 기능설명
ApiParam : 사용자가 데이터 입력하는 부분을 swagger에서 테스트 가능

package spring.airbnb.controller;


import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiParam;
import io.swagger.v3.oas.annotations.Operation;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Api(tags = {"1. hello"})
@Controller
public class HelloController {
    @ApiImplicitParams({
            @ApiImplicitParam(name = "X-AUTH-TOKEN", value = "로그인 성공 후 access_token", required = true, dataTypeClass = String.class, paramType = "header")
    })
    @Operation(summary = "api 기능", description = "api 설명")
    @GetMapping(value = "/hello")
    public String hello(@ApiParam(value = "회원ID : 이메일", required = true) @RequestParam String id) {
        return id;
    }

}
profile
단단한 프론트엔드 개발자가 되고 싶은

0개의 댓글