[英]Apollo / GraphQL Same Query with Different Parameters
我将如何处理具有不同参数的Apollo查询。 假设我的应用程序具有用户概念,我希望我的API能够通过ID或用户名找到用户。
看来我无法做到这一点
type Query {
user(id: ID!): User
user(username: String!): User
}
我必须诉诸于这样的事情吗
type Query {
userById(id: ID!): User
userByUsername(username: String!): User
}
我相信您的第二个选择是最好的,但是您可以这样做。
type Query {
user(id: ID, username: String): User
}
如果不需要参数,那么您的解析器可以使用一些逻辑来确定是否应基于id或用户名来吸引用户。
if (args.id) {
return getUserById(args.id)
} else {
return getUserByUsername(args.username)
}
但是,由于本次演讲中提到的原因https://youtu.be/pJamhW2xPYw?t=750 (可能会在12:30左右看到),我相信您的第二个选择是更好的设计选择。 希望有帮助!
使用ID和username作为字段创建一个新的输入类型,并将其指定为参数。
type Query {
getUser(filters:UserFilter): User
}
input UserFilter{
ID : Int,
Username : String
}
查询应如下所示:
Query{
getUser(filters:{ID:123123})
}
或用于用户名过滤器
Query{
getUser(filters:{Username:"Tom"})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.