GraphQL + Express の基本的なライブラリまとめ
例えば 「Express で GraphQL のHTTPサーバを立てる」として、いざネットでサンプルを探してみると graphql で express なパッケージって結構な種類を見かける気がするんですよね。
今まで特に違いを意識せずにサンプルコードからのコピペで済ませていたのですが、手元のプロジェクト群で使っている graphql 用のミドルウェアに、気づいたら色々な種類のものが混じっているなと気になり始め... そろそろ「GraphQL界にはこんな感じの似ている名前のパッケージがある」ということを一度俯瞰したくなったので、整理がてらまとめてみます。
- express-graphql
- apollo-server-express
- graphql-server-express
- ソース: github/apollographql/apollo-server
- apollo-server-express の別名パッケージみたいですね
ということで大別すると graphql.org 製のものと apollo 製のものがあり graphql-server-express は apollo-server-express のエイリアスなので実質
のどちらかを選ぶ、ということになりますね。
両者の違いについては大体 apollo-server の README に書いてあり、チュートリアル程度の使い方をしている限り、違いとして出てくるのは
- 対応するサーバアプリケーション
- express-graphql の方は Express だけ
- apollo-server は他に Connect など対応範囲が広い
- body-parser の有無
- express-graphql は body-parser を含んでいる
- apollo-server は別途前段でユーザが用意する必要がある
- GraphiQL のエンドポイントの流儀
- express-graphql は graphql と同一エンドポイントで GET/POST で使い分ける
- apollo-server は /graphql と /graphiql など、それぞれのエンドポイントで使い分ける
...という、このあたりを押さえておくと、ネット上のサンプルコードを読む際に紛れが減るんじゃないかと思います。