Dev/GraphQL

altair-spring-boot-starter 도입 중 No static resource altair 오류 해결

kyeoneee 2024. 8. 27. 18:15
반응형

GraphQL 플레이 그라운드는 GraphiQL, Altair 등이 있다.

GraphiQL UI가 마음에 안들기도 하고, 기존에 Altair를 사용하고 있었어서 GraphQL 서버를 개발하면서 Altair 붙이는 것 부터 작업을 시작했는데, 여기서 부터 막혀버렸다.

 

build.gradle.kts

implementation("com.graphql-java-kickstart:altair-spring-boot-starter:11.1.0")

application.yml

graphql:
  altair:
    enabled: true
    mapping: /altair
    options:
      endpoint-url: /graphql

위와 같이 설정을 해도 아래와 같이 404 No static resource altair. 오류가 발생했다

Dependency는 잘 걸린 것 같은데 아래의 Altair static 파일들을 가져오지 못해서 발생하는 문제 같았다.

한참을 삽질하다가 구글링으로 두가지 해결 방법을 찾았다.

 

property 설정으로 해결

static 리소스는 CDN으로 전달되어서 application.yaml 에 cdn 설정을 추가하면 된다.

   graphql:
     altair:
       enabled: true
       mapping: /altair
       cdn:
         enabled: true
         version: 4.0.2
       options:
         endpoint-url: /graphql

Configuration

직접 static 리소스 파일의 위치를 WebMvcConfigurationSupport에 추가한다.

@Configuration
class GraphQlConfig : WebMvcConfigurationSupport() {
    override fun addResourceHandlers(registry: ResourceHandlerRegistry) {
        registry.addResourceHandler("/vendor/**")
            .addResourceLocations("classpath:/static/vendor/")
    }
}

altair-spring-boot-starter에서 CDN 설정을 제공해주니 property 설정으로 해결하는게 좋다고 판단하고 해당 방법으로 문제를 해결했다.

 

참고

반응형