首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >graphql-java-tools:空参数与不存在参数

graphql-java-tools:空参数与不存在参数
EN

Stack Overflow用户
提问于 2018-03-15 09:26:34
回答 2查看 1.4K关注 0票数 2

如果参数显式设置为null,或者根本没有提供参数,我如何在java graphQL中区分它?

我试图实现的用例如下:我有一个这样的突变

代码语言:javascript
复制
updateUser(id:Int!, changes:UserChanges!)

#where UserChanges is defined as:
type UserChanges {
    login:String
    email:String
    #etc

}

这里的想法是,用户只提供他想要更改的字段(比如react )。因此,如果电子邮件是完整的,我想保持不变。

但是,如果他/她想要显式地将电子邮件设置为空呢?有没有办法从我的解析器方法中找出这一点并采取相应的行动?

(我使用graphql-java-tools库)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-01 18:01:00

我找到了答案。如果有人需要它:每个解析器方法都可以使用graphql.schema.DataFetchingEnvironment的实例。

这提供了getArguments()、hasArgument()等方法。使用这些方法,我们可以知道参数是显式设置为null,还是根本没有提供参数。

票数 3
EN

Stack Overflow用户

发布于 2019-04-11 18:36:01

看起来查询/变量的反序列化是由快速too处理的,这是处理问题的合适位置,否则就变得太复杂了:检查每个字段吗?嵌套?

所以: UserChanges.java应该是这样的:

代码语言:javascript
复制
class UserChanges {
// SHOULD NOT HAVE ALL ARGUMENT CONSTRUCTOR!
 Optional<String> login;
 Optional<String> email;
 ... getters & setters
}

在这种情况下,反序列化程序将使用setter,仅用于提供的字段!{"login":null}将成为:

代码语言:javascript
复制
UserChanges.login = Optional.empty
UserChanges.email = null
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49295636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档