티스토리 뷰
반응형
구성
- spring-boot-starter-webflux (2.1.0.RELEASE)
- springfox-swagger2 (3.0.0-SNAPSHOT)
우선 pom.xml에 관련 dependency들을 추가해 줍니다.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<swagger.version>3.0.0-SNAPSHOT</swagger.version>
</properties>
<dependencies>
<!-- srping webflux -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<!-- swagger 3 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-spring-webflux</artifactId>
<version>${swagger.version}</version>
</dependency>
</dependencies>
이후 Docket 빈을 생성해주시면 됩니다.
@Configuration
@EnableSwagger2WebFlux
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.build()
.genericModelSubstitutes(Optional.class, Flux.class, Mono.class);
}
}
spring webflux를 사용하시면 api 응답값으로 Mono<T>, Flux<T>를 사용하실 텐데요, .genericModelSubstitutes(Optional.class, Flux.class, Mono.class);를 추가해주시지 않으면 아래 이미지 처럼 Response 모델이 정상적으로 보이지 않습니다.
정상적으로 SwaggerConfig에 추가해주셨다면 아래처럼 잘 나오게됩니다.
이제 api 작성을 통해 테스트를 진행하시면 됩니다.
@RestController
public class PostController {
private final PostService postService;
public PostController(PostService postService) {
this.postService = postService;
}
@ApiOperation(value = "Post 생성")
@PostMapping("/boards/{boardId}/posts")
public Mono<PostDTO> addPost(@PathVariable Long boardId, @RequestBody PostRequestDTO postRequestDTO) {
// ...
}
}
이제 http://localhost:8080/swagger-ui.html에 접속하셔서 정상적으로 swagger가 동작하는지 확인하시면 됩니다.
참고
반응형
'프로그래밍 > Spring' 카테고리의 다른 글
| Spring Webflux + JDBC(혹은 blocking call) 핸들링 방법 (0) | 2018.12.26 |
|---|---|
| Spring MVC Last-Modified, If-Modified-Since 캐시 설정 (0) | 2018.07.09 |
| Spring Boot + Vue.js 연동하기 (0) | 2017.12.29 |
| [thymeleaf] legacy html5 모드 설정 (0) | 2017.12.26 |
| [JSTL] JSP 커스텀 태그 만들기 (0) | 2017.11.28 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 이수페타시스
- rabbitmq
- ruby
- 엔비디아
- Rails
- install
- 주식투자
- html
- 삼성전자
- 현대차
- 이펙티브 자바
- ruby on rails
- 자료구조
- 국제유가
- 티스토리 초대장
- 프로그래밍
- CSS
- 웹프로그래밍
- OpenStack
- Java
- 반도체관련주
- codecademy
- HBM
- SK하이닉스
- javascript
- ubuntu
- Message Queue
- 투자전략
- 한미반도체
- 알고리즘
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함
Copyright ⓒ 2018 moneystory.blog. All rights reserved.
