Node.jsとExpressでGraphQLサーバーを作成!初心者向け手順解説②

Node.jsとExpressでGraphQLサーバーを作成!初心者向け手順解説② GraphQL

前回の記事の内容に、スキーマとリゾルバーの定義、クエリとミューテーションの実装を追加します。前回の記事をご覧になっていない方はそちらを先に御覧ください。

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サーバーを構築してみてください。

タイトルとURLをコピーしました