325 Views
June 23, 22
スライド概要
設計原則をフィーリングでまとめました
エンジニアです
2022年6月23日 Web API LT会 - vol.4 REST と GraphQL の こころ 重中風奎(Shigenaka Fuuki) Twitter: @fuukidev エンジニアです ● サーバーサイドを主に書いてます ● 趣味で React なども書いてます ● いま一番触ってるのは gRPC です
僕が知っていること ● REST ○ ○ ● CRUD 操作をリソース単位で行う URI とメソッドの組み合わせで操作する GraphQL ○ ○ グラフを表現したようなクエリが書ける CRUD だと複数回取得して JOIN するような取得も一度にできる なんとなく使い方とかは分かるが こころ がよくわからない
REST ● もととなった論文を参考にしました ○ ○ ● Roy Thomas Fielding, Architectural Styles and the Design of Network-based Software Architectures (2000) https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm 設計原則 ○ ○ ○ ○ ○ クライアントとサーバーに分ける ステートレス キャッシュ リソースは識別子を持つ etc…
リソースID、操作、リソース自体 リソースは 識別子を持つ E A B C D Client Server リソースの表現
こころ RESST の 粒立ち
GraphQL ● ● REST が設計原則であったのに対し、GraphQL はクエリ言語 GraphQL 仕様 ○ ○ https://spec.graphql.org/October2021/ 設計原則が書いてありました
GraphQL の設計原則 ● Product-centric: 製品中心 ○ ● Hierarchical: 階層 ○ ● ツールにより正しいことの保証を得られる Client-specified response: クライアントが指定するレスポンス ○ ● ビューの階層と構造を一致させる Strong-typing: 強力な型付け ○ ● フロントエンドエンジニアのための要件、言語、ランタイム クライアントが要求するものだけを、指定した形で返す Introspective: 内省的 ○ GraphQL 自身で型システムを照会できる 参考:GraphQL仕様 1.Overview (https://spec.graphql.org/October2021/) Copyright © 2015-2018, Facebook, Inc. 2019-present, GraphQL contributors
こころ GraphQL の Front engineer Love
まとめ ● ● REST と GraphQL の こころ (設計原則)を探ってみた 一段階上のレイヤーから API の設計ができるようになった気がします 重中風奎(Shigenaka Fuuki) Twitter: @fuukidev