Apollo / GraphQL 具有不同参数的相同查询
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 和用户名作为字段的新输入类型,并将其指定为参数。
type Query {
getUser(filters:UserFilter): User
}
input UserFilter{
ID : Int,
Username : String
}
查询应如下所示...
Query{
getUser(filters:{ID:123123})
}
或用于用户名过滤器
Query{
getUser(filters:{Username:"Tom"})
}
我将如何使用不同的参数进行 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 和用户名作为字段的新输入类型,并将其指定为参数。
type Query {
getUser(filters:UserFilter): User
}
input UserFilter{
ID : Int,
Username : String
}
查询应如下所示...
Query{
getUser(filters:{ID:123123})
}
或用于用户名过滤器
Query{
getUser(filters:{Username:"Tom"})
}