GithubのAPI v4を参考にしつつGraphQLのスキーマ設計をしようとしていまして、1点質問させていただきます。
Githubではinput objectは{mutationName}Input
と命名する規則が存在するようです。
この命名規則について、以下の理解をしています。
- pros: input objectとmutationの関係が明瞭になる
- cons: 再利用性が低くなる
この理解のうえで、「prosが小さく、consが大きいのでは」と感じています。
「そのpros/consの認識は誤っている」、「他にこんなpros/consがある」などあればお教えいただきたいです。
よろしくお願いします????
補足: 「再利用性が低くなる」というデメリットについて
例えばこのリンクの例においては、Githubの命名規則には従わずに、
createMessage
, updateMessage
というmutationの引数に共通してMessageInput
というtypeを利用することにより、再利用性を獲得しています。
しかしGithubの命名規則に従った場合、以下のようになるかと思います。
gql
1type Mutation { 2 createMessage(input: CreateMessageInput): Message 3 updateMessage(input: UpdateMessageInput): Message 4} 5 6input CreateMessageInput { 7 content: String 8 author: String 9} 10 11input UpdateMessageInput { 12 id: ID! 13 content: String 14 author: String 15}
これではinput objectが個別に作成され再利用されていないため、たとえばMessageというリソースに対して属性が追加されたときに、2つのinput objectそれぞれに修正を加えなくてはならないと思います。
ちなみに共通化するため以下のように書ければよいのですが、input objectではこの記法はサポートされていないと思っています。
gql
1interface MessageInput { 2 content: String 3 author: String 4} 5 6input CreateMessageInput implements MessageInput { # 無効な記法 7} 8 9input UpdateMessageInput implements MessageInput { # 無効な記法 10 id: ID! 11}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。