
spring cloud gateway를 이용하여 여러 마이크로 서비스 swagger를 연결하고자 합니다.
1) 의존성(gradle) 추가
implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webflux-ui', version: '2.2.0'
2) Gateway를 통해 마이크로 서비스를 연결 경로 설정


use-root-path=true를 통해 gateway포트를 접근하면 swagger로 바로 접근할 수 있습니다

definition를 통해 gateway에 연결된 서비스에 접근할 수 있습니다
GateWay의 설정은 완료!
여기서 의문점이 생겼던 부분이 각각의 마이크로 서비스도 swagger를 통해 연결해주는 방법이라고 생각했습니다. 그로인해 각각의 서비스도 swagger를 만들고자 했지만 json형태로 데이터를 gateway로 줘야한다는 것을 알 수 있었습니다
1) 의존성(gradle) 추가
implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webflux-ui', version: '2.2.0'
2) Gateway로 연결된 서비스 포트로 연결( ※ API접근시 JSON 형태로 수락과 응답으로 반환)

3) 서비스는 각각의 swagger를 만들기 보다는 JSON 타입으로 반환해줘야 한다(해당 내용을 gateway의 swagger가 읽어 html로 보여준다)

@RequiredArgsConstructor
@Configuration
@OpenAPIDefinition(
info = @Info(title = "API Document", description = "MAIL SERVICE 명세서", version = "v3")
)
public class SwaggerConfig {
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.addServersItem(new Server().url("/"));
}
}
여기서 서버의 url을 /로 설정하는 것은 해당 서버를 배포하였을 때, 서버가 https로 설정되어 있을 경우에 swagger를 통해 API 요청시에, http, https 간의 통신에서 cors와 같은 문제가 발생할 수 있어서, url을 root 경로로 설정해서 이를 방지하기 위해서 입니다.
