GraphQL は、クライアントがデータを正確にクエリし、ネットワーク帯域幅とサーバー リソースの無駄を回避できる API 用のクエリ言語です。この記事では、PHP を使用して GraphQL API を作成する方法について説明します。
GraphQL API の仕組み
GraphQL API はクエリ言語に基づいています。クライアントはクエリリクエストをサーバーに送信し、サーバーはリクエストを解析して対応するデータを返します。リクエストとレスポンスはGraphQL言語形式で送受信されます。
GraphQL API はマルチレベルの関連クエリもサポートしており、クライアントは一部のデータをクエリしてから、同じクエリで関連データをリクエストできます。これにより、ネットワーク帯域幅とサーバーのオーバーヘッドが大幅に削減されます。
GraphQL API には、クエリ、タイプ、パーサーという 3 つの主要な概念があります。クエリはクライアントによって送信されるリクエスト、GraphQL タイプは API で使用されるオブジェクト、リゾルバーはリクエストをレスポンスに変換するコードです。
GraphQL API の作成
PHP を使用して GraphQL API を実装し、webonyx/graphql-php ライブラリを使用してクエリを構築および解析します。
まず、API 内のオブジェクトを記述するいくつかの GraphQL タイプを作成する必要があります。以下はユーザー タイプの例です。
use GraphQLTypeDefinitionType; use GraphQLTypeDefinitionObjectType; $userType = new ObjectType([ 'name' => 'User', 'fields' => [ 'id' => Type::int(), 'name' => Type::string(), 'email' => Type::string() ] ]);
上記のコードは、id、名前、電子メールの 3 つのフィールドを含む User という名前のタイプを作成します。各フィールドには型があり、Type::int() は整数型を表し、Type::string() は文字列型を表します。
次に、クエリを処理するパーサーを作成する必要があります。以下はユーザー クエリ パーサーのサンプルです。
$rootValue = [ 'users' => [ ['id' => 1, 'name' => 'Alice', 'email' => 'alice@example.com'], ['id' => 2, 'name' => 'Bob', 'email' => 'bob@example.com'] ] ]; $resolver = function ($root, $args) { global $rootValue; if (isset($args['id'])) { foreach ($rootValue['users'] as $user) { if ($user['id'] == $args['id']) { return $user; } } } else { return $rootValue['users']; } };
上記のコードは、2 つのユーザー オブジェクトを含む $rootValue 配列を作成します。 $resolver 関数は、クライアントから送信されたリクエストに従って、対応するデータを返します。リクエストに id パラメーターがある場合は、その id を持つユーザー情報が返されます。それ以外の場合は、すべてのユーザー情報が返されます。
最後に、上記の型とリゾルバーを GraphQL API にバインドする必要があります。バインディング コードは次のとおりです。
use GraphQLGraphQL; use GraphQLTypeSchema; $schema = new Schema([ 'query' => new ObjectType([ 'name' => 'Query', 'fields' => [ 'user' => [ 'type' => $userType, 'args' => ['id' => Type::int()], 'resolve' => $resolver ], 'users' => [ 'type' => Type::listOf($userType), 'resolve' => $resolver ] ] ]) ]); if (!empty($_POST['query'])) { $result = GraphQL::executeQuery($schema, $_POST['query']); echo json_encode($result->toArray()); }
上記のコードは、ユーザー タイプとリゾルバーを GraphQL API にバインドし、クエリ オブジェクトを作成します。クエリ オブジェクトでは、「user」や「users」などの複数のクエリを定義できます。各クエリはそのタイプとパーサーを指定する必要があり、クエリが検出されたときに呼び出されます。
次に、POST リクエストを介して API にクエリを送信し、応答データを解析する必要があります。上記のコードを例として、API から応答 JSON オブジェクトを取得して直接出力します。
概要
この記事では、PHP を使用して GraphQL API を作成する方法を紹介しました。 GraphQL API がどのように機能するかについて説明し、タイプ、リゾルバーを作成し、それらを API にバインドする方法を示すサンプル コードをいくつか提供しました。また、webonyx/graphql-php ライブラリを使用して、API の構築と解析を簡素化します。 GraphQL について詳しく知りたい場合は、GraphQL の公式ドキュメントを参照してください。
以上がPHP を使用して GraphQL API を作成する方法を学ぶ: API インターフェイスを構築する手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。