GraphQL は、クライアントで返す必要があるデータを正確に指定できる新しい API クエリ言語です。これにより、サーバーによる不要なデータの送信が削減され、ネットワーク リクエストとデータ送信の効率が向上します。従来の RESTful スタイル API と比較して、GraphQL はより柔軟で効率的です。この記事では、PHP で GraphQL を使用して API インターフェイスを作成する方法を説明します。
GraphQL の使用を開始する前に、GraphQL 関連のライブラリをインストールする必要があります。 PHP で最も人気のある GraphQL ライブラリは webonyx/graphql-php です。
$ composer require webonyx/graphql-php
GraphQL では、スキーマはデータ モデルとクエリ ステートメントを定義します。スキーマは GraphQL の中核部分です。スキーマを定義することで、API の動作とデータ形式を定義できます。GraphQL-php は、GraphQLTypeSchema クラスを使用してスキーマを作成します。たとえば、次は単純なスキーマ定義です。
use GraphQLTypeDefinitionType; use GraphQLTypeSchema; $queryType = new GraphQLTypeDefinitionObjectType([ 'name' => 'Query', 'fields' => [ 'message' => [ 'type' => Type::string(), 'resolve' => function() { return 'Hello, World!'; } ], ] ]); $schema = new Schema([ 'query' => $queryType ]);
この例では、1 つのフィールドを含むクエリ タイプを定義します。このフィールドは message と呼ばれ、文字列 Hello, World! を返します。スキーマでは、queryType を定義してエクスポートし、このタイプを使用してスキーマのクエリ エントリを指定します。
スキーマを定義したら、GraphQL リクエストの処理を開始できます。 GraphQL の PHP ライブラリを使用してリクエストを処理できます。このうち、GraphQLServerStandardServer クラスはサーバーの実装を提供し、リクエストをスキーマ ハンドラーにルーティングして応答結果を取得します。 GraphQL リクエストを処理するための基本的な手順は次のとおりです。
以下は、GraphQL リクエストを処理するための基本的なコード例です:
use GraphQLServerStandardServer; // 获取请求参数 $request = json_decode(file_get_contents('php://input'), true); // 将请求参数解析为GraphQL查询 $query = isset($request['query']) ? $request['query'] : null; $variables = isset($request['variables']) ? $request['variables'] : null; // 执行请求 $server = new StandardServer([ 'schema' => $schema, 'debug' => true, ]); $result = $server->executePsrRequest(Request::fromGlobals(), $query, [], $variables); // 返回结果 echo json_encode($result);
この例では、最初にリクエスト パラメータを取得します。次に、リクエスト パラメーターが GraphQL クエリに解析され、StandardServer を通じて実行されます。最後に、返された結果を JSON 形式にシリアル化し、クライアントに返します。
GraphQL API の機能を強化するために、「機能」と「権限」を追加できます。 GraphQL によるこれらの機能のサポートは非常に強力です。たとえば、GraphQL の「強制型チェック」を使用して、各フィールドのデータ型が正しいことを確認できます。さらに、GraphQL の「スキーマ検証」を使用して、各フィールドが存在し、定義した型に準拠していることを確認できます。
同時に、データのセキュリティを保護するために、API に「権限」を追加する必要がある場合があります。 「権限」とは、ユーザーがデータベース内の特定のデータにアクセスする権限を持っているかどうかを確認することです。GraphQL では、権限制御要件を実装するためのさまざまな方法が提供されます。たとえば、スキーマを定義するときに、強力なロールベースのアクセス制御を定義できます。
認証は Web アプリケーション認証の一部であり、ユーザーの ID を検出するために使用されます。 GraphQL では認証もサポートされています。リクエストを処理するときに、ユーザーが有効な認証方法を持っているかどうかを確認することで、API のセキュリティを確保できます。認証を実装するときは、ユーザーの ID 情報をパラメータとして各リクエストに渡すこともできます。
GraphQL では、データへのアクセスまたは更新時に必要な一時的な状態やプロパティの問題を解決するために、「コンテキスト」の概念が導入されています。コンテキストは通常、GraphQL オペレーションに接続された永続ストアまたはキャッシュですが、現在のユーザーの認証データやリクエスト データなど、任意の有用な情報を含めることもできます。
PHP では、コンテキストにパラメーターを追加することで、各リクエストにデータを渡すことができます。たとえば、基本的な例を次に示します。
$context = [ 'db' => $db, 'currentUser' => $currentUser, ]; $server = new StandardServer([ 'schema' => $schema, 'context' => $context, ]); $result = $server->processPsrRequest($request, $response);
この例では、「context」という変数を定義し、その変数をリクエスト ハンドラーに追加します。こうすることで、すべてのリクエストがそのコンテキストにアクセスし、そこに含まれる情報を使用できるようになります。
概要
GraphQL を使用して PHP で API インターフェイスを作成するには、GraphQL ライブラリをインストールし、スキーマを定義し、GraphQL リクエストを処理し、権限と認証を実装し、コンテキストを使用して渡す必要があります。情報。 GraphQL の真の価値は、データのクエリと操作を行うための柔軟かつ効率的な方法を提供し、開発者がよりエレガントで効率的な API を作成できるようにすることです。この記事が、読者が GraphQL をよりよく理解し、学習し、PHP でそれを使用して素晴らしい API を構築するのに役立つことを願っています。
以上がPHP で GraphQL を使用して API インターフェイスを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。