Web アプリケーションの継続的な開発に伴い、API (アプリケーション プログラミング インターフェイス) の使用がますます一般的になってきています。 API は Web アプリケーションの中核として、さまざまなアプリケーションが相互に通信し、データを共有できるようにします。 PHP 開発では、従来の RESTful API よりも柔軟で効率的な GraphQL API がますます人気の開発方法になっています。
GraphQL は Facebook によって開発された API クエリ言語で、クライアントはサーバーから必要な正確なデータを取得できます。従来の RESTful API と比較して、GraphQL はより柔軟かつ効率的であり、アプリケーションとサーバー間の通信量を大幅に削減できます。この記事では、PHP で GraphQL API を開発および処理する方法を説明します。
最初のステップは、GraphQL API がどのように機能するかを理解することです。 GraphQL API の中核は、クエリ可能および変更可能なデータ型と操作を定義するスキーマ (スキーマ) です。クライアントは、GraphQL クエリ言語を使用して、必要なデータをクエリするリクエストをサーバーに送信できます。サーバーは GraphQL スキーマに従って操作を解釈し、クライアントが必要とするデータを返します。 graphql-php は、GraphQL API をより便利に開発するのに役立つ PHP ライブラリです。
GraphQL API 開発の最初のステップは、スキーマを作成することです。クエリ可能および変更可能なデータ型と操作を含むスキーマを定義する必要があります。通常、スキーマにはクエリ オブジェクト、変更オブジェクト、入力オブジェクト、およびスカラー型が含まれます。
このうち、クエリ オブジェクトはクライアントがクエリできるデータを表します。変更オブジェクトはクライアントが変更できるデータを表します。入力オブジェクトはクライアントがサーバーに送信できるデータを表します。スカラー型文字列、ブール値、整数や浮動小数点数などの基本データ型が含まれます。
スキーマを作成するプロセスでは、各オブジェクトとフィールドのタイプとパラメーターを指定する必要があります。たとえば、次は単純なクエリ オブジェクトです。
type Query { hello: String! }
このクエリ オブジェクトは、文字列タイプの hello フィールドをクエリできることを示します。感嘆符は、このフィールドが必須であり、null を返すことができないことを示します。
次に、各オブジェクトまたはフィールドのデータ取得と変更の処理を担当するリゾルバー (パーサー) を定義する必要があります。リゾルバーは、リクエストとコンテキスト情報を受信し、クエリ結果を返す必要がある PHP コールバック関数です。たとえば、上で定義した hello フィールドの場合、リゾルバーを作成できます。
$resolvers = [ 'Query' => [ 'hello' => function () { return 'Hello, World!'; }, ], ];
このリゾルバーは、文字列「Hello, World!」を直接返します。クエリリクエストを処理できるように、このリゾルバーをスキーマにバインドする必要があります。
次に、graphql-php ライブラリの GraphQL クラスを使用して、クライアントのクエリ リクエストを処理する HTTP リクエスト プロセッサを作成できます。 HTTP リクエスト ハンドラーはリクエストを受信し、クエリを解析してリクエストを GraphQL クエリ言語に変更し、それをスキーマに渡します。
<?php require_once __DIR__ . '/vendor/autoload.php'; use GraphQLGraphQL; use GraphQLTypeSchema; use function GraphQLTypealidate; $schema = new Schema([ 'query' => $queryType, 'mutation' => $mutationType, ]); try { $rawInput = file_get_contents('php://input'); $input = json_decode($rawInput, true); $query = isset($input['query']) ? $input['query'] : null; $variableValues = isset($input['variables']) ? $input['variables'] : null; $operationName = isset($input['operationName']) ? $input['operationName'] : null; $result = GraphQL::executeQuery($schema, $query, null, null, $variableValues, $operationName); $output = $result->toArray(); } catch (Exception $e) { $output = [ 'error' => [ 'message' => $e->getMessage() ] ]; } header('Content-Type: application/json; charset=UTF-8'); echo json_encode($output);
最後に、GraphQL API を保護する方法も考慮する必要があります。 GraphQL API を使用すると、クライアントはデータを柔軟にクエリおよび変更できるため、悪用を防ぐためにいくつかの対策が必要です。認証と認可を通じて API のセキュリティと合法性を確保できます。
要約すると、GraphQL API を開発するには、スキーマを定義し、リゾルバーを記述し、HTTP リクエスト プロセッサを作成する必要があります。 GraphQL API には、高い柔軟性と高効率という利点があります。したがって、PHP 開発で柔軟で効率的な API を構築する必要がある場合は、間違いなく GraphQL API が良い選択となるでしょう。
以上がPHP API開発におけるGraphQL APIの扱い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。