グラフQL

PHPz
PHPzオリジナル
2024-08-10 16:38:03671ブラウズ

グラフQL

グラフQL とは何ですか?

グラフQL は、API 用の強力なクエリ言語であり、データを使用してクエリを実行するためのランタイムです。 2012 年に Facebook によって開発され、2015 年にオープンソース プロジェクトとしてリリースされた グラフQL を使用すると、クライアントは必要なデータを正確にリクエストできます。それ以上でもそれ以下でもありません。

主な機能:

  • 単一エンドポイント: 通常複数のエンドポイントを使用する REST とは異なり、グラフQL はすべてのリクエストに対して単一のエンドポイントを使用します。
  • 柔軟なクエリ: クライアントは、単一のクエリで必要な特定のデータのみをリクエストできます。
  • 強い型付け: スキーマは API 内の型と関係を定義し、堅牢なデータ検証とイントロスペクションを保証します。

グラフQL と REST の違い

1.データの取得:

  • REST: 関連データをフェッチするには複数のエンドポイントが必要です。たとえば、/users を押してから /users/{id}/posts を押す必要がある場合があります。
  • グラフQL: 単一のクエリで必要なデータをすべてフェッチできるようにします。 1 回のリクエストでユーザーの詳細と投稿を取得できます。

2.オーバーフェッチとアンダーフェッチ:

  • REST: 必要以上のデータを返す (オーバーフェッチ) か、より多くのデータを取得するために追加のリクエストが必要になる (アンダーフェッチ) ことがよくあります。
  • グラフQL: クライアントは必要なデータを正確に指定し、オーバーフェッチとアンダーフェッチの両方を排除します。

3.バージョン管理:

  • REST: API バージョンを更新する必要がある場合があります (例: /v1/users から /v2/users へ)。
  • グラフQL: バージョン管理なしで進化します。既存のクエリを壊すことなく、新しいフィールドとタイプを追加できます。

基本的な グラフQL クエリの例

ユーザー情報を取得するための グラフQL クエリを作成する方法は次のとおりです。

query {
  user(id: "1") {
    name
    email
    posts {
      title
      content
    }
  }
}

このクエリ内:

  • user(id: "1") は、ID 1 のユーザーを取得することを指定します。
  • ネストされたフィールドの名前、電子メール、および投稿が要求されます。
  • 投稿にはサブフィールドのタイトルとコンテンツが含まれており、ネストされたデータ構造が可能です。

単純な グラフQL サーバーのセットアップ

グラフQL を始めるには、Node.js と Apollo Server を使用して基本的なサーバーをセットアップしましょう。

1.依存関係のインストール:

npm install apollo-server graphql

2.基本サーバーを作成します:

index.js という名前のファイルを作成し、次のコードを追加します。

const { ApolloServer, gql } = require('apollo-server');

// Define your type definitions
const typeDefs = gql`
  type Post {
    title: String
    content: String
  }

  type User {
    name: String
    email: String
    posts: [Post]
  }

  type Query {
    user(id: String!): User
  }
`;

// Define your resolvers
const resolvers = {
  Query: {
    user: (_, { id }) => ({
      name: "John Doe",
      email: "john.doe@example.com",
      posts: [
        { title: "グラフQL Basics", content: "Learning グラフQL is fun!" }
      ]
    }),
  },
};

// Create an Apollo Server instance
const server = new ApolloServer({ typeDefs, resolvers });

// Start the server
server.listen().then(({ url }) => {
  console.log(`? Server ready at ${url}`);
});

3.サーバーを実行します:

node index.js

これでサーバーが実行され、GraphiQL (http://localhost:4000 で入手可能) または任意の グラフQL クライアントを使用してテストできます。

グラフQL を使用する理由

  • 効率的なデータ読み込み: 必要なものを正確にリクエストし、不必要なデータ転送を削減します。
  • スキーマと型の安全性: データ構造を強制し、データを効率的に検証します。
  • 開発者エクスペリエンス: GraphiQL や Apollo Client などのツールは、オートコンプリートやドキュメントなどの機能により生産性を向上させます。

今すぐ グラフQL を始めましょう!

グラフQL を使用すると、より効率的で柔軟でスケーラブルな API を構築できます。来週も楽しみにしていてください。スキーマ設計やミューテーションなどの高度な グラフQL トピックをさらに詳しく掘り下げていきます。

以上がグラフQLの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。