きみはねこみたいなにゃんにゃんなまほう

ねこもスクリプトをかくなり

GraphQL + Express の基本的なライブラリまとめ

例えば 「Express で GraphQL のHTTPサーバを立てる」として、いざネットでサンプルを探してみると graphql で express なパッケージって結構な種類を見かける気がするんですよね。

今まで特に違いを意識せずにサンプルコードからのコピペで済ませていたのですが、手元のプロジェクト群で使っている graphql 用のミドルウェアに、気づいたら色々な種類のものが混じっているなと気になり始め... そろそろ「GraphQL界にはこんな感じの似ている名前のパッケージがある」ということを一度俯瞰したくなったので、整理がてらまとめてみます。

ということで大別すると graphql.org 製のものと apollo 製のものがあり graphql-server-express は apollo-server-express のエイリアスなので実質

  • graphql.org の express-graphql
  • Apolloapollo-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 など、それぞれのエンドポイントで使い分ける

...という、このあたりを押さえておくと、ネット上のサンプルコードを読む際に紛れが減るんじゃないかと思います。