GraphQL
https://gyazo.com/637324c63a3adf4a254626d08802acba
のっとって実装すると、柔軟なクエリが書けるようになる
主な利用者
Facebook, Airbnb, Atlassian, Audi, CNBC, Major League Soccer, Netflix, Shopify, The New York Times, Twitter, Pinterest, Yelp...
GitHubはAPI v4からGraphQLに移行
資料
公式
まとまっていて、2019-02-07時点でこれを一番始めによむとよさそうkadoyau.icon
クライアント視点
「リソース取得に特化した Web API」
サーバ視点
「うまく設計されたREST APIなら同じことはできる」
GraphQLを主要FWや言語で上手く使うためのライブラリ群Apolloの話題 RESTより指数関数的に負荷のかかるクエリ(「AのもつすべてのBのもつすべてのC」みたいなの)を書きやすいので、オープンなAPIを作成する際には盲点があるかも
双方向通信の規定がないのでsubscriptionは頑張りが必要
運用知見
書籍
利点
Some APIs such as those with very few entities and relationships across entities like analytics APIs may not be suited for GraphQL. Whereas applications with many different domain objects like e-commerce where you have items, users, orders, payments, and so on may be able to leverage GraphQL much more.
Why do you need a graph? Today, one of the most difficult parts of building an app is figuring out your data layer. Often, there’s many data sources you need to fetch from and many clients you need to support. When you layer a graph in between your services and your UI, you can remove a lot of complexity from your data fetching logic and ship features faster.
RESTの5つに当てはまらないものどうするの問題
「DELETEと言っても削除はせず単なるアーカイブである」とか
どちらが正しいのか問題を繰り広げてしまう
GraphQLなら適切な単語を付ける事ができる
リソース同じなのに呼び出しユーザの名前とかが入るとキャッシュがきかないのでつらい(miyagawa) 利用例
Apollo
https://gyazo.com/6e674bb63200223dd261142004a0cf12
用語集
開発ツール
チュートリアル