[英]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.