Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/authentication/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphql 使用指令进行输入验证_Graphql_Graphql Java - Fatal编程技术网

Graphql 使用指令进行输入验证

Graphql 使用指令进行输入验证,graphql,graphql-java,Graphql,Graphql Java,我目前正在使用GraphQL在服务器上工作,我一直在用指令实现输入验证。我试图做的是向输入类型添加指令,允许我在将输入传递给实际的数据获取程序之前验证给定的输入。 模式: 我已经完成了连接和模式构建部分,变异是有效的,但我在实现模式时遇到了问题,模式允许我验证电子邮件(例如:电子邮件必须包含“@gmail.com”)。通过指令进行输入验证是不可行的。我建议用两种方法来解决这个问题 没有外部库-解析器负责验证 这是最基本的解决办法。数据获取程序(解析器)必须返回DataFetchErrorResu

我目前正在使用GraphQL在服务器上工作,我一直在用指令实现输入验证。我试图做的是向输入类型添加指令,允许我在将输入传递给实际的数据获取程序之前验证给定的输入。 模式:


我已经完成了连接和模式构建部分,变异是有效的,但我在实现模式时遇到了问题,模式允许我验证电子邮件(例如:电子邮件必须包含“@gmail.com”)。

通过指令进行输入验证是不可行的。我建议用两种方法来解决这个问题

没有外部库-解析器负责验证

这是最基本的解决办法。数据获取程序(解析器)必须返回DataFetchErrorResult,该结果可能包含一个或多个GraphQLError。在数据获取程序中,您可以实现验证,填充DataFetcherResult GraphQLError,如果没有发现错误,则执行变异

这可以通过使用POJO映射GraphQL输入对象来改进,就像graphl java工具所做的那样,并在处理输入之前使用javax注释和验证器来验证输入

使用GraphQL Java扩展验证库-

这个库可以满足您的需要,并为您提供一些基本指令和相关约束。请注意,该库是非常新的(在嵌套输入验证方面存在一些bug)

directive @email on INPUT_FIELD_DEFINITION
type Mutation {
   getAccounts(filter: InutAccount): [Account] 
}
input InputAccount{
   email: String @email
}