我有java枚举
public enum JavaStatus{
ACTIVE,
PAUSED,
STOPPPED;
}
我想通过 graphql 使用小写值发送和接收这个枚举。前端应该能够加载图形模式来检查可用值。所以 schema.graphqls 应该包含:
enum GraphqlStatus{
active
paused
stopped
}
如何绘制它?
我试过了
@Bean(name = "graphqlStatusEnum)
public GraphQLEnumType graphqlStatusEnum() {
return GraphQLEnumType.newEnum().name("GraphqlStatus")
.value("active", JavaStatus.ACTIVE)
.value("paused", JavaStatus.PAUSED)
.value("stopped", JavaStatus.STOPPPED)
.build();
}
但是我遇到了错误
Expected value for name 'active' in enum 'JavaStatus' but found none!
将自定义
EnumValuesProvider
添加到 GraphQL 连接:
@Configuration
public class GraphQLConfig {
@Bean
public RuntimeWiringConfigurer runtimeWiringConfigurer() {
return wiringBuilder -> wiringBuilder
.type(newTypeWiring("GraphqlStatus")
.enumValues(graphqlStatusEnum())
);
}
private EnumValuesProvider graphqlStatusEnum() {
return new MapEnumValuesProvider(Map.of("active", JavaStatus.ACTIVE, "paused", JavaStatus.PAUSED, "stopped", JavaStatus.STOPPED));
}
}