GraphQL Mutation(更新処理)
Qiita のアカウントを削除したので Qiita へリンクしていた記事を非公開にしました。
以前からほぼアドベントカレンダーでしか投稿してなかったので、今後も学習記録はこのブログに書きます。
開発環境
- go1.18.1 linux/amd64
- github.com/99designs/gqlgen v0.17.5
本文
GraphQL で更新処理を実装した。
https://gitlab.com/k1350/daybreak_sample/-/tree/graqhql_update_blog
Directive を使ったバリデーションは複合バリデーションが面倒なのだが、他にいい感じの機構が見つけられていない。
そもそも GraphQL 自体 Query では良い効果を発揮するものの、Mutation についてはそれほど良さが見いだせない物なので、もしかしたら GraphQL と RESTful を組み合わせるほうがいいのかもしれない。
またエラーを適当に返していたのでカスタムエラーへの置き換えを実装した。
後でエラーログ書き出し時にスタックトレースが取れるように errors.Wrap()
で元のエラーをくるむ方式にしているが、そのまま返すとフロント側にはくるむ前のエラーメッセージも返ってしまうので、エラーを返す前にフロントに見えてもいいエラーメッセージに直す処理を入れている。
https://gqlgen.com/reference/errors/
に書いてある error presenter というのをうまく活用したいのだが gqlerror.Error
という型について調べないと使えないため、今度その気になったら調べる予定。