서론 없이 시작
1.일단 swagger ui부터 띄워본다.
build.gradle에 의존성을 추가해준다
https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-starter-webflux-ui/2.8.9
// swagger
implementation("io.swagger.core.v3:swagger-annotations:2.2.34")
implementation("org.springdoc:springdoc-openapi-starter-webflux-ui:2.6.0")
starter 안 들어간걸로 하면 안 돌아감..
왤까..
build한 뒤에 local run해주면 ui가 뜬다
2. application.yml 작성
server:
host:localhost
port:8080
spring:
application:
name: adapter
profiles:
active: local
springdoc:
api-docs:
path: /api-docs
groups:
enabled: true
swagger-ui:
path: /swagger
tags-sorter: alpha
operations-sorter: alpha
cache:
disabled: true
복사한 뒤 페이지 새로고침
yml에서 정의한 태그가 자동으로 붙어있는 걸 볼 수 있다.
3. configuration 파일 작성
package org.example.adapater.common.config
import io.swagger.v3.oas.models.OpenAPI
import io.swagger.v3.oas.models.info.Info
import io.swagger.v3.oas.models.servers.Server
import org.springdoc.core.models.GroupedOpenApi
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.web.reactive.resource.ResourceUrlProvider
@Configuration
class SpringDocOpenapiConfig() {
@Bean
fun openApi(url: ResourceUrlProvider): OpenAPI {
return OpenAPI()
.servers(listOf(Server().url("http://localhost:8080")))
.info(
Info()
.title("SpringDocOpenAPI")
.description("SpringDocOpenAPI")
)
}
@Bean
fun testUtilitiesApi(): GroupedOpenApi {
return GroupedOpenApi
.builder()
.group("test")
.pathsToMatch("/**")
.build()
}
}
import되는 의존성이 일치하는지 잘 확인하시길...
test로 지정했던 group이 잘 생긴 것을 확인 가능
4. api 연동하기
4-1. 잘 돌아가는 컨트롤러를 준비해준다.
그러나 스웨거가 안되는 이유 : 스프링부트에 CORS 셋팅 안해줘서 (그럼 포스트맨은 왜 되는거임)
CORS 셋팅을 해주러 떠나자
4-2. CORS 셋팅
@Configuration
class WebFluxConfig : WebFluxConfigurer {
override fun addCorsMappings(registry: CorsRegistry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:8080")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*")
.allowCredentials(true)
}
}
그리고 새로고침하면 끝