Welcome to our Website
LAPOZ-AI
Start a conversation with AI with GPT!
ChatGPTでGraphQLについて調べてみた
2022年06月16日
GraphQLには例えば以下のような特徴がある。
・query responseの構造が対応関係。
・レスポンスの構造を推測 一つのエンドポイントで必要データを取得できる。
・テスト、ドキュメントを作成しなくてもクエリ情報を確認できる。
他にどういった特徴があるのか調べてみた。
GraphQL
GraphQLはデータ駆動型のアプリケーションでよく使われるデータクエリ言語です。RESTfulなAPIに比べて、GraphQLはクライアント側で取得したいデータを柔軟に指定できる点が大きな特徴です。
以下に基本的なGraphQLの使用方法について説明します。
1. スキーマの定義
まずは、APIで提供するデータの型と形状を定義するGraphQLスキーマを作成します。スキーマは一種の契約書のようなもので、クライアントがサーバからどのようなデータを取得できるかを規定します。
例えば、以下のようなスキーマを定義することができます:
type Book {
title: String
author: String
}
type Query {
books: [Book]
}
2. リゾルバの定義
リゾルバはスキーマで定義した型やフィールドに対応するデータをどのように取得するかを定義する関数の集合です。基本的に、クライアントからのクエリに対してサーバがどのようなデータを返すかを決定します。
例えば、以下のようなリゾルバを定義することができます:
const resolvers = {
Query: {
books: () => [
{
title: 'The Lord of the Rings',
author: 'J.R.R. Tolkien',
},
{
title: 'The Hitchhiker\'s Guide to the Galaxy',
author: 'Douglas Adams',
}
],
},
};
3. サーバの設定と起動
最後に、GraphQLサーバを設定し、起動します。Node.jsの場合、apollo-serverのようなライブラリを使用してGraphQLサーバを簡単に作成することができます。
const { ApolloServer, gql } = require('apollo-server');
const typeDefs = gql`
# スキーマの定義
`;
const resolvers = {
// リゾルバの定義
};
const server = new ApolloServer({ typeDefs, resolvers });
server.listen().then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});
4. クエリの送信
以上でサーバの準備が整いました。GraphQLのクエリは以下のようになります:
query {
books {
title
author
}
}
このクエリをサーバに送信すると、サーバはそれぞれのbookについて"title"と"author"のフィールドを含むデータを返します。このように、GraphQLではクライアント側が必要なデータを具体的に指定することができます。
以上が基本的なGraphQLの使い方です。もちろん、実際のアプリケーションでは、データベースからデータを取得するためのリゾルバを実装したり、認証やエラーハンドリングを行う必要があります。また、サブスクリプションを使ってリアルタイムのデータ更新をハンドリングしたり、ミューテーションを使ってデータを変更することも可能です。