前回の記事の内容に、スキーマとリゾルバーの定義、クエリとミューテーションの実装を追加します。前回の記事をご覧になっていない方はそちらを先に御覧ください。
Node.jsとExpressでGraphQLサーバーを作成!初心者向け手順解説
API開発の新たなスタンダードであるGraphQL。Node.jsとExpressを使って、簡単にGraphQLサーバーを作成しましょう!この記事では、初心者向けに手順を詳細に説明します。GraphQLの基本概念から実装まで、一歩ずつ進めて...
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');
// GraphQLスキーマの定義
const schema = buildSchema(`
type Query {
hello: String
message(id: Int!): String
}
type Mutation {
setMessage(id: Int!, message: String!): String
}
`);
// メッセージを格納するオブジェクト
const messageStore = {};
// リゾルバ関数の定義
const root = {
hello: () => 'Hello, world!',
message: ({ id }) => messageStore[id],
setMessage: ({ id, message }) => {
messageStore[id] = message;
return message;
},
};
// Expressサーバーの設定
const app = express();
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
// サーバーの起動
app.listen(4000, () => console.log('GraphQLサーバーが http://localhost:4000/graphql で起動しました'));
このソースコードでは、message
クエリと setMessage
ミューテーションを追加しています。message
クエリは、指定されたIDに対応するメッセージを返すもので、setMessage
ミューテーションは、指定されたIDにメッセージを保存するものです。
以下のようなクエリとミューテーションを http://localhost:4000/graphql
で実行してみてください。
ミューテーションでメッセージを設定する:
mutation { setMessage(id: 1, message: "こんにちは!") }
クエリでメッセージを取得する:
{ message(id: 1) }
これで、スキーマとリゾルバーの定義、クエリとミューテーションの実装が完了しました。このソースコードを基に、さらに複雑なデータ構造やリゾルバを追加して、独自のGraphQLサーバーを構築してみてください。