Maven
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
Gradle
# https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter
implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0'
application.yml
swagger:
project:
# external-host: local.domain.com # 도메인 URL (localhost 사용시 명시 안해도 됨)
base-package: com.java.test.domain # 베이스 패키지
SwaggerConfiguration.java
import org.springframework.beans.factory.annotation.Value;
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 {
@Value("${swagger.project.base-package}")
private String basePackage;
// @Value("${swagger.project.external-host}")
// private String externalHost;
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage(this.basePackage))
.paths(PathSelectors.ant("/**"))
.build()
// .host(this.externalHost)
.apiInfo(this.apiInfo())
.useDefaultResponseMessages(false);
}
/**
* API Documents Information
* @return
*/
private ApiInfo apiInfo() {
String title = "Swagger API Documents"; // 스웨거 UI 타이틀
String version = "1.0.0";
String license = "Dongmin All rights reserved";
return new ApiInfoBuilder()
.title(title)
.version(version)
.license(license)
.build();
}
}
localhost:8080/swagger-ui/
import io.swagger.annotations.ApiModelProperty;
public class Request {
@ApiModelProperty(value = "이름", example = "KIM", required = true)
private String name; // 필수값
@ApiModelProperty(value = "나이", example = "5")
private Integer age;
}
public class Response {
@ApiModelProperty(value = "회사명", example = "CJ")
private String company;
@ApiModelProperty(value = "부서", example = "개발팀")
private String department;
}
required = true 로 설정한 필드는 필수 값이다. 디폴트: required = false@Api(tags = "나의 컨트롤러")
@RestController
@RequestMapping("/api")
public class MyController {
...
}
@Api(tags = "나의 컨트롤러")
@RestController
@RequestMapping("/api")
public class MyController {
@ApiOperation(value = "Swagger 예시 API")
@ApiImplicitParams({
@ApiImplicitParam(name = "param1", value = "1번파라미터", required = true, dataType = "string", example = "12345"),
@ApiImplicitParam(name = "param2", value = "2번파라미터", required = false, dataType = "int", example = "100"),
})
@GetMapping("/example")
public ResponseEntity<String> example(@RequestParam String param1, @RequestParam String param2) {
// code
}
}
해당 파라미터에 @ApiIgnore 추가
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/example")
public ResponseEntity<String> example(@RequestParam String param1, @ApiIgnore @RequestParam String param2) {
// code
}
}
단일 메소드
@RestController
@RequestMapping("/api")
public class MyController {
@ApiIgnore
@GetMapping("/example")
public ResponseEntity<String> example(@RequestParam String param1, @RequestParam String param2) {
// code
}
}
클래스 단위
@ApiIgnore
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/example")
public ResponseEntity<String> example(@RequestParam String param1, @RequestParam String param2) {
// code
}
}