如何处理具有不同参数的Apollo查询。假设我的应用具有用户概念,我希望我的API能够通过ID或用户名找到用户。
看来我无法做到
type Query {
user(id: ID!): User
user(username: String!): User
}
我必须诉诸类似的东西
type Query {
userById(id: ID!): User
userByUsername(username: String!): User
}
答案 0 :(得分:2)
我相信您的第二个选择是最好的,但是您可以这样做。
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左右)中提到的原因,我相信您的第二个选择是更好的设计选择。希望有帮助!
答案 1 :(得分:2)
使用ID和用户名作为字段创建新的输入类型,并将其指定为参数。
Query{
getUser(filters:{ID:123123})
}
查询应如下所示
Query{
getUser(filters:{Username:"Tom"})
}
或用于用户名过滤器
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>