GraphQL + Node.js -Introduction-
ここではNode.js(Express)を使ってGraphQLサーバーを構築します。はじめはシンプルなAPIから実装し、最後はログイン機能を持ったアプリケーションを作っていきます。Node.jsだけではなくデータベースやORMについても学習するので大変かもしれませんが 手を動かしながら一緒に覚えていきましょう。
Projectの作成
まずターミナルを開き、graph-nodeというディレクトリを作り、プロジェクトのルートに移動します。
次にnpm init -yでpackage.jsonファイルを作成します。
mkdir graph-node
cd graph-node
npm init -y
3つの基本となるパッケージをインストールします。
apollo-serverについて(公式ドキュメント)
npm install express graphql apollo-server-express
エントリーポイントとなるファイルindex.jsをsrcディレクトリ内に作成します。基本的にnode src/index.jsでサーバーを起動します。好みでnodemonなど使うと効率よく開発できます。
mkdir src
touch src/index.js
作成したindex.jsに以下のようにコードをかいてください。説明は上から順に行っていきます。
// src/index.js
const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
const typeDefs = gql
type Query {
hello: String!
}
const resolvers = {
Query: {
hello: () => 'Hello world!'
}
}
const server = new ApolloServer({
typeDefs,
resolvers,
})
const app = express();
server.applyMiddleware({ app });
app.listen({ port: 4000 }, () =>
console.log('🚀 Server ready at http://localhost:4000/graphql')
);
1.まずtypeDefsについて、ここではGraphQLのスキーマの定義をしています。このページではシンプルにhelloというnon-nullableなString型を持つフィールドを定義しています。
2.続いて、resolversについて、typeDefsで定義したスキーマを実際に実行しています。
3.最後にtypeDefsとresolversはapollo-server-expressからインポートしたApolloServerにわたして、そこからサーバーにどのようにそれがを動かすのかを伝えています。
実際にアプリケーションの作成時などにはそれぞれファイルを見やすいように分けることが多いですがここでは、全てindex.jsにまとめます。
実行してみよう
node src/index.js
おそらく下のターミナルに次のようにでているので、
🚀 Server ready at http://localhost:4000/graphql
http://localhost:4000/graphqlにアクセスすると
上のようなページにとぶので、早速以下のコードを実行しよう。
query {
hello
}
queryは省略可
上のように出ればとりあえず成功です!!次に進みましょう。次はもう少し複雑なQueriesを扱います。