これは一般的な質問です。私が意味することをよりよく説明するために例を挙げています。GraphQL APIでフィールドを控えめにまたは寛大に追加する必要がありますか?
私はユーザーモデルとトーナメントモデルを持ち、トーナメントモデルにユーザーIDとそのスコアのキー/値マップがあるものとします。 GraphQLのAPIとして、これを露光したとき、私は直接そのように、多かれ少なかれ、それを公開することができます:
Schema {
tournament: {
scores: [{
user: User
score: Number
}]
}
user($id: ID) {
id: ID
name: String
}
}
これは、すべてのデータへのアクセスを提供します。しかし、多くの場合、特定のトーナメントでユーザーの得点を得ることや、トーナメントから特定のユーザーの得点を得ることが有用な場合があります。言い換えれば、私が追加できることを便利なようで、多くのエッジがあります
Schema {
tournament: {
scores: [{
user: User
score: Number
}]
userScore($userID: ID): Number # New edge!
}
user($id: ID) {
id: ID
name: String
tournamentScore($tournamentID: ID): Number # New edge!
}
}
これおそらく、便利な方法で、より多くのユースケースをカバーし、クライアントのために消費するより実用的になります。一方、私が公開するほど、私はより多くを維持する必要があります。
私の質問は:一般的に、それは「寛大」ことと(それがクライアントのために、それが容易になりますので)該当ノード間の多くのエッジが露出するように優れている、またはそれは控えめコードのみ公開することをお勧めしますデータを取得するのに必要なだけ多く(維持することが少ないため)
もちろん、この簡単な例ではどちらの点でも大きな違いはありませんが、より大きなAPIを設計する際にこれらが重要な疑問になるような気がします。
私は混乱しています。 GraphQLで新しいフィールドのどこに_edge_という用語が見つかりましたか? –
私は...それは彼らが呼ばれたものだと思ったが、今あなたが言うと、私はそれを作ったにちがいない。私は型がノードであり、フィールドがあなたのAPIであるグラフの辺であるように考えていました。それは理にかなっているように感じました。しかし、今では、それらの用語がサイトのどこにも使われていないことがわかりました。しかたがない。 – Ludwik
お返事ありがとうございます。はい、各GraphQLオブジェクトタイプはノードを表し、GraphQLオブジェクトは1つ以上のフィールドで構成されます。 EdgeはGraphQL接続のコンテキストでより多く使用されます。 –