@@ -712,11 +712,11 @@ GraphQLの草案は素朴なものよりもかなり良くなっていますが
712
712
`description `はすでに強い型付け(`String `ではなく`HTML `)がされており、またこれまで強い型付けを議論してきました。
713
713
しかし、繰り返しになりますが、入力は出力と少し異なる振る舞いを行うのです。
714
714
715
- 強い型付けに対する値の検証は、ユーザ空間のコードが実行されるよりも前でに 、GraphQL のレイヤーで実行されます。
715
+ 強い型付けに対する値の検証は、ユーザ空間のコードが実行されるよりも前に 、GraphQL のレイヤーで実行されます。
716
716
つまり、クライアントはGraphQL レイヤーにおける検証とビジネスドメインレイヤーにおける検証の両方で発生するエラーをそれぞれ対応する必要があるということです。
717
717
(例えば、現状の許容ストレージ内で生成できるコレクションの上限に達した場合など)
718
718
719
- 処理を簡単にするために、クライアント側で事前に検証を行うことが難しい場合には、我々は入力対して意図的に弱い型付けを行います 。
719
+ 処理を簡単にするために、クライアント側で事前に検証を行うことが難しい場合には、我々は入力に対して意図的に弱い型付けを行います 。
720
720
これにより、ビジネスロジックレイヤーがすべての検証を行い、クライアントも一箇所から発生するエラーだけに対処するだけで済みます。
721
721
722
722
*ルール #19: フォーマットが曖昧であったり、クライアント側の検証が複雑な場合には、入力に対して弱い型付け(`Email`ではなく`String`)を行うこと。これによりサーバーは一度にすべての検証を実行し、単一のフォーマットでエラーを報告することになり、結果としてクライアントが非常にシンプルになる。*
@@ -725,7 +725,7 @@ GraphQLの草案は素朴なものよりもかなり良くなっていますが
725
725
我々はrole の入力における`field `と`relation `フィールドに強い型付けをもったenum を用いています。
726
726
例えば`DateTime `のような特定の値入力に対しても、強い型付けを使うことがあるでしょう。
727
727
728
- 違いを生む要因はクライアント側検証の複雑さとフォーマットの曖昧さです 。
728
+ 違いを生む要因はクライアント側の検証の複雑さとフォーマットの曖昧さです 。
729
729
HTML はうまく定義されていて、明瞭な仕様がありますが、検証を行うには極めて複雑です。
730
730
他方で日時や日付を表現する文字列には何百の表現方法があり、それらすべてが適切にシンプルなフォーマットをもっています。
731
731
したがって、サーバーが期待するフォーマットを指定するために強い型付けを行うと便利です。
@@ -734,7 +734,7 @@ HTMLはうまく定義されていて、明瞭な仕様がありますが、検
734
734
735
735
### 入力: 構造 パート2
736
736
737
- つづいて update 操作をみていきます 。
737
+ つづいて update の mutation をみていきます 。
738
738
739
739
```graphql
740
740
type Mutation {
@@ -842,8 +842,8 @@ type CollectionUpdatePayload {
842
842
- ルール #16: 関連に対するmutationを分けて実装するときには、一度に複数の要素に対して実行することが便利かどうか検討すること。
843
843
- ルール #17: アルファベット順でグループ化するために、mutationの接頭辞に操作対象のオブジェクト名を用いること(例えば`cancelOrder`ではなく`orderCancel`とする。)
844
844
- ルール #18: mutation処理を遂行するうえで意味的に本当に必要である場合に限り、入力フィールドを必須とすること。
845
- - ルール #19: フォーマットが曖昧であったり、クライアント側の検証が複雑な場合には、入力に対して弱い型付け(`Email`ではなく`String`)を行うこと。これによりサーバーは一度にすべての検証を実行し、単一のフォーマットでエラーを報告することになり、結果としてクライアント非常にシンプルになる 。
846
- - ルール #20: フォーマットが曖昧でクライアント側検証がシンプルな場合は強い型付け (`String`ではなく`DateTime`)を行うこと。型付けにより明確さを得られ、クライアントにより厳しい入力値管理(フリーテキスト入力ではなくカレンダーウィジェットを用いる)を促せる。
845
+ - ルール #19: フォーマットが曖昧であったり、クライアント側の検証が複雑な場合には、入力に対して弱い型付け(`Email`ではなく`String`)を行うこと。これによりサーバーは一度にすべての検証を実行し、単一のフォーマットでエラーを報告することになり、結果としてクライアントが非常にシンプルになる 。
846
+ - ルール #20: フォーマットが曖昧でクライアント側の検証がシンプルな場合は強い型付け (`String`ではなく`DateTime`)を行うこと。型付けにより明確さを得られ、クライアントにより厳しい入力値管理(フリーテキスト入力ではなくカレンダーウィジェットを用いる)を促せる。
847
847
- ルール #21: たとえいくつかのフィールドの必須制約を緩和する必要があっても、重複を減らすためにmutationの入力を構造化すること。
848
848
- ルール #22: mutationはビジネスロジックレベルのエラーを`userErrors`フィールドに入れて返すこと。トップレベルのエラーフィールドはクライアントおよびサーバーレベルのエラーのために残しておくこと。
849
849
- ルール #23: すべてのエラーケースおいて返せる特定の値がないのであれば、mutationが返すほとんどのフィールドはNullableであること。
0 commit comments