如何在Graphql-java中实现Custom Scalar? [英] How to implement Custom Scalar in Graphql-java?

查看:71
本文介绍了如何在Graphql-java中实现Custom Scalar?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是graphql的新手.我正在尝试实现自定义标量类型电子邮件".但正在低于错误.你能帮我吗?

I am new to graphql. I am trying to implement custom scalar type "Email". but am getting below error. Could you please help me?

作者:com.coxautodev.graphql.tools.SchemaClassScannerError:预期用户定义的名称为"Email"的GraphQL标量类型,但未找到!在com.coxautodev.graphql.tools.SchemaClassScanner.validateAndCreateResult(SchemaClassScanner.kt:144)〜[graphql-java-tools-4.3.0.jar:na]在com.coxautodev.graphql.tools.SchemaClassScanner.scanForClasses(SchemaClassScanner.kt:94)〜[graphql-java-tools-4.3.0.jar:na]

by: com.coxautodev.graphql.tools.SchemaClassScannerError: Expected a user-defined GraphQL scalar type with name 'Email' but found none! at com.coxautodev.graphql.tools.SchemaClassScanner.validateAndCreateResult(SchemaClassScanner.kt:144) ~[graphql-java-tools-4.3.0.jar:na] at com.coxautodev.graphql.tools.SchemaClassScanner.scanForClasses(SchemaClassScanner.kt:94) ~[graphql-java-tools-4.3.0.jar:na]

配置:

scalar Email

type Greeting {
  id: ID!
  message: String!
  email:Email
}

type Query {
  getGreeting(id: ID!): Greeting
}

type Mutation {
  newGreeting(message: String!): Greeting!
}

版本信息:

springBootVersion = '1.5.8.RELEASE'

com.graphql-java:graphql-java:6.0')

com.graphql-java:graphql-java-tools:4.3.0')

com.graphql-java:graphql-java-servlet:4.7.0')

org.springframework.boot:spring-boot-starter-web')

com.graphql-java:graphql-spring-boot-starter:3.10.0')

com.graphql-java:graphiql-spring-boot-starter:3.10.0')      

请帮助...

推荐答案

尝试一下:

@Component
public class ScalarEMail extends GraphQLScalarType {
    public ScalarEMail() {
        super("Email", "Scalar Email", new Coercing() {
            @Override
            public Object serialize(Object o) throws CoercingSerializeException {
                return ((Email) o).getEmail();
            }

            @Override
            public Object parseValue(Object o) throws CoercingParseValueException {
                return serialize(o);
            }

            @Override
            public Object parseLiteral(Object o) throws CoercingParseLiteralException {
                return Email.valueOf(((StringValue) o).getValue());
            }
        });
    }
}

这篇关于如何在Graphql-java中实现Custom Scalar?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆