私のデータモデルには、Folder
とMessages
という2つのリソースがあります。各メッセージはフォルダに属します。場合によっては、フォルダのリスト(各フォルダのいくつかのフィールドを含む)を取得したいと思うことがあります。ときには、特定のフォルダの詳細(そのフォルダのフィールドやメッセージを含む)を取得したい場合があります。GraphQLの "index"リストと "show"の詳細をモデル化するには?
Rails/RESTfulシステムでは、これはFolder
リソースのindex
とshow
アクションに対応します。後者は所望のフォルダを指定するid
パラメータを受け取る。このスキーマは、「慣用的な」GraphQLでどのように見えるでしょうか?
一つのアプローチは、アクションごとに一つのフィールドを持っているかもしれません。
type Query {
folders: [Folder]
folder(id: String!): Folder
}
は厄介なようで、それが難しく、クライアントはイントロスペクションとスキーマを理解できるようになり、ここでいくつかの重複、あります。
おそらく複製はNULL引数で除去することができる。
type Query {
folder(id: String): [Folder]
}
id
が渡された場合、そのFolder
のちょうど詳細は(一項目配列として)返されます。 id
がnil
の場合、すべてのフォルダの詳細が表示されます。このオーバーロードは隠された複雑さを加えるようです。
どのアプローチが「より良い方法」ですか?この状況をモデル化する良い方法はありますか?