Dr.*_*ste 2 spring-boot graphql
我有一个 GraphQL API(Spring Boot 2、GraphQL Spring Boot Starter、GraphiQL)的工作设置。
然后我尝试引入由库graphql-java-extended-scalars提供的自定义标量(在本例中为java.time.LocalDate类型的成员的DateScalar):
我在模式中声明了自定义标量和类型,
scalar Date
...
somedate: Date
...
Run Code Online (Sandbox Code Playgroud)
我GraphQLScalarType作为 Spring Bean 提供(否则服务器不会启动):
scalar Date
...
somedate: Date
...
Run Code Online (Sandbox Code Playgroud)
我用Date执行了一个突变查询。
@Bean
public GraphQLScalarType date() {
return ExtendedScalars.Date;
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是我得到了这个例外,
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.LocalDate` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
Run Code Online (Sandbox Code Playgroud)
经过几个小时的研究,我不知道哪里出了问题。尽管在配置中提供了标量,但似乎没有选择标量。
长GraphQLInputType这样,
mutation {
createSomething(
something:{
...
somedate: "2018-07-20",
...
}
)
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我认为在为 SchemaParserOptions 提供调整后的映射器配置后,它可以工作:
@Bean
public SchemaParserOptions schemaParserOptions(){
return SchemaParserOptions.newOptions().objectMapperConfigurer((mapper, context) -> {
mapper.registerModule(new JavaTimeModule());
}).build();
}
Run Code Online (Sandbox Code Playgroud)
GraphQL 使用自己的对象映射器,因此您必须在其上注册 JavaTimeModule。
| 归档时间: |
|
| 查看次数: |
2217 次 |
| 最近记录: |