GraphQL
はじめに断っておく
毎日違う事ばっかやってんじゃねーよ!!
なぜまとまって同じ仕事を進めないのか
昨日は AndroidNDKでOpenGLしたのに
今日はGraphQLである
主にサーバー向け
RESTの問題
APIというとRESTである
パスパラメータで指定して欲しい情報をJsonで受け取る
とりあえず REST API使っておけば文句は言われない
ただ、私はいろいろな理由から Rest is dead と思っていた
まず パスパラメータでは、パスの順番どうする? わかりにくいよね問題
例えば 17歳女性のユーザリストを取得する場合
http://localhost/api/v1/find_users/age/17/gender/1 http://localhost/api/v1/find_users/gender/1/age/17
どーっちだ
こういう場合はおそらく
http://localhost/api/v1/find_users?age=17&gender=1
と、クエリパラメータにして名前付きパラメータにすればよい
じゃあ 最初っから全部クエリにしたほうがよくね??
URLをコントローラーにするというアイディアは、MVCの切り分けとしてはわかりやすくとてもGoodなんだけど
そろそろ 弱点が見えてきたと思ってる
もちろん Get、Put、Post、Delete、Patch、Header・・・ のHTTP MethodとDBのCRUDが一致しないのも問題
仕様が増えるごとに パスが増える
APIバージョンがあがるとパスがまた増える・・
そこでGraphQL
まだ調査中だけど、GraphQLは クライアントから欲しいデータをリクエストする
クエリを投げるようなかたちになる
例えば ほんの少し欲しいデータや検索項目が違う場合 RESTだとそのぶんAPI増やす必要があるが
GraphQLでは、クライアント側のリクエストを変更するだけで、サーバは何も変わらない
とりあえず 手を動かすのが早い
GraphQLをNode.jsとexpressでためしてみる | Developers.IO
ClassMethodさん ナイス記事
ただ コードが少しTypoしているのが惜しい
でも そのTypoを自分で直せば理解できてるか確認できる
大雑把にまとめると、GraphQLで検索やUpdate、Insert命令をクライアントから指定できるので
APIの数が減る
まとめ
色々とメリットがありそうなのはわかったが、実際に使うとなると 色々と戸惑うので
まずはGithub等 GraphQLを使ったサービスのAPI事例を見て イメージつけていこうと思う