spring boot swagger2 사용하기
프로그래밍2018. 2. 1. 11:21
1. maven dependency 추가
1 2 3 4 5 6 7 8 9 10 11 | <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.1</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.6.1</version> </dependency> | cs |
2. @Configuration 설정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.kyu.boot.controller")) .paths(PathSelectors.any()) .build() .useDefaultResponseMessages(false) .globalResponseMessage(RequestMethod.GET, newArrayList(new ResponseMessageBuilder() .code(500) .message("Internal Server Error") .responseModel(new ModelRef("Error")) .build(), new ResponseMessageBuilder() .code(400) .message("Bad Request") .build(), new ResponseMessageBuilder() .code(404) .message("Not Found") .build())); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("test swagger2") .description("swagger2 사용해 봅시다.") .build(); } } | cs |
apis 메서드에는 swagger를 적용할 패키지 경로를 작성하면 된다.
RequestHandlerSelectors.any() 와 같이 설정 가능하지만 비즈니스에서 사용하는 api 외에 스프링 부트에서 제공하는 api도 함께 출력된다.
paths 메서드에는 어떤 규칙의 uri 패턴을 설정하는 구간이다. (ex : "/api/**")
3. swagger-ui 접속
http://localhost:8080/swagger-ui.html 페이지에 접속하면 swagger 페이지가 보여지게 된다.
4. annotaion 사용 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | @Slf4j @RestController @Api(value = "main", description = "main controller") public class MainController { @ApiOperation(value = "메인 페이지") @ApiImplicitParams({ @ApiImplicitParam(name = "area", value = "지역", required = true, dataType = "string", paramType = "path"), @ApiImplicitParam(name = "param1", value = "파라미터1", required = true, dataType = "string", paramType = "query"), @ApiImplicitParam(name = "param2", value = "파라미터2", required = true, dataType = "int", paramType = "query"), @ApiImplicitParam(name = "param3", value = "파라미터3", required = false, dataType = "int", paramType = "query") }) @GetMapping(value = "/main/{area}") public ResultMain main(@PathVariable String area , @RequestParam String param1 , @RequestParam int param2 , @RequestParam(required = false, defaultValue = "0") int param3 , @RequestHeader("remoteAddr") String remoteAddr) { ResultMain resultMain = new ResultMain(); resultMain.setParam1(param1); resultMain.setParam2(param2); resultMain.setParam3(param3); return resultMain; } } @Data public class ResultMain { @ApiModelProperty(notes = "파라미터1", required = true) private String param1; @ApiModelProperty(notes = "파라미터2", required = true) private int param2; @ApiModelProperty(notes = "파라미터3", required = true) private int param3; } | cs |
@Api(value = "main", description = "main controller")
@ApiOperation(value = "메인 페이지")
@ApiImplicitParams
@ApiModelProperty
[참고]
스프링 시큐리티가 적용되어 있다면 swagger에서 사용하는 URL에 대한 예외 처리가 필요하다.
application.yml 설정에 spring.resources.add-mappings=false 로 되어 있다면 true로 변경해야 /swagger-ui.html 페이지 호출이 가능하다.
'프로그래밍' 카테고리의 다른 글
티스토리 API 연동 (1) | 2018.09.18 |
---|---|
SCP command 프로그램 (0) | 2018.05.17 |
3. Spring Cloud를 이용한 MSA 구축하기 - config client (0) | 2018.05.15 |
linux 장비 원격 실행 프로그램 (0) | 2018.05.08 |
16. [JPA] Bulk Insert (0) | 2017.12.14 |
15. [JPA] Spring Data JPA (0) | 2017.12.14 |
20. [JPA] lombok 사용 시 주의사항 (0) | 2017.11.28 |
19. [JPA] 트랜잭션 테스트 (0) | 2017.11.27 |
댓글()