// build.gradle
dependencies {
implementation 'io.springfox:springfox-boot-starter:3.0.0'
}
// application.properties
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
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에서는 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;
}
}