PHP で GraphQL API を使用する方法のベスト プラクティス

WBOY
リリース: 2023-06-17 11:46:01
オリジナル
1956 人が閲覧しました

GraphQL は、データの取得と操作のプロセスを大幅に簡素化できる強力な API クエリ言語です。 PHP は広く使用されサポートされているプログラミング言語であり、GraphQL API を使用してさまざまなデータ ソースに簡単にアクセスすることもできます。ただし、PHP 開発者には、PHP アプリケーションで GraphQL API を使用するためのベスト プラクティスに関するガイダンスがまだ必要です。この記事では、PHP で GraphQL API を使用する方法を詳しく説明します。

1. GraphQL ライブラリのインストールと設定

始める前に、アプリケーションが GraphQL サーバーと通信できるようにするために、PHP GraphQL ライブラリをダウンロードしてインストールする必要があります。 PHP では、webonyx/graphql-php や youshido/graphql など、人気のある GraphQL ライブラリから選択できます。この記事では、デモンストレーションとして webonyx/graphql-php を使用します。

まず、Composer を使用してこのライブラリをインストールする必要があります。 Composer をインストールしていない場合は、公式 Web サイトのドキュメントを確認してインストールしてください。次に、ターミナルを開いて次のコマンドを実行します。

composer require webonyx/graphql-php
ログイン後にコピー

インストールが完了したら、GraphQL サーバーと通信できるように GraphQL ライブラリを構成する必要があります。 GraphQL サーバーの URL を指定し、HTTP クライアント実装を選択する必要があります。この例では、Guzzle HTTP クライアント実装を使用します。以下は、GraphQL ライブラリを構成するサンプル コードです。

require_once __DIR__ . '/vendor/autoload.php';

use GuzzleHttpClient;
use GraphQLClientExceptionRequestError;
use GraphQLClientResponse;

$http = new Client([
    'base_uri' => 'https://example.com/graphql',
    'headers' => [
        'Content-Type' => 'application/json',
        'Accept' => 'application/json',
    ],
]);

$graphql = new GraphQLClientHttpClientHttpClient($http, function (Response $response, RequestError $errors) {
    if ($errors) {
        throw $errors;
    }
});

$transport = new GraphQLClientTransport($graphql);
ログイン後にコピー

上記のコードでは、まず Guzzle HTTP クライアントを作成し、GraphQL サーバーの URL を指定します。次に、GraphQL クライアントを作成する関数を定義します。これにより、HTTP クライアントがインスタンス化され、それが GraphQL クライアントに渡されます。最後に、GraphQL クエリをリモート サーバーに送信するための GraphQL リクエスト トランスポート オブジェクトを作成しました。

2. GraphQL クエリを作成する

GraphQL ライブラリを使用してサーバーと通信する方法を理解した後、データを取得するための GraphQL クエリを準備する必要があります。リクエストする必要があるすべての GraphQL クエリについて、クエリ文字列を定義し、それを GraphQL クライアントに渡す必要があります。 GraphQL クエリ文字列の例を次に示します。

$query = <<<'GRAPHQL'
query ($name: String!) {
    user(name: $name) {
        id
        name
        email
        posts {
            id
            title
            content
        }
    }
}
GRAPHQL;
ログイン後にコピー

上記のクエリでは、name パラメータを必要とし、リストを返す user という名前のクエリを定義しました。そのユーザーに関連付けられた ID、名前、電子メール、投稿の情報。このクエリは次の結果を返します:

{
    "data": {
        "user": {
            "id": "1",
            "name": "John Doe",
            "email": "johndoe@example.com",
            "posts": [
                {
                    "id": "1",
                    "title": "Introduction to GraphQL",
                    "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
                },
                {
                    "id": "2",
                    "title": "GraphQL vs. REST",
                    "content": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem."
                }
            ]
        }
    }
}
ログイン後にコピー

3. GraphQL クエリの送信

GraphQL クエリ文字列を準備したので、GraphQL ライブラリを使用してクエリをリモート サーバーに送信できます。 。以下は、GraphQL ライブラリを使用してクエリを送信するサンプル コードです。

$variables = ['name' => 'John Doe'];

$query = <<<'GRAPHQL'
    query ($name: String!) {
        user(name: $name) {
            id
            name
            email
            posts {
                id
                title
                content
            }
        }
    }
GRAPHQL;

$request = new GraphQLClientRequest($query, $variables);
$response = $transport->send($request);
ログイン後にコピー

上記のコードでは、最初に $variables という名前のパラメータ配列を定義し、それを GraphQL クエリに渡します。また、Graphql クエリ文字列を定義し、それを GraphQL クライアントに渡します。最後に、新しい GraphQL リクエストを作成し、GraphQL トランスポートを使用して送信します。 GraphQL トランスポートは、クエリ文字列と変数配列をパラメータとして要求し、GraphQL サーバーから応答を返します。

4. GraphQL 応答の処理

GraphQL クエリの送信に成功し、サーバーから応答が返されたら、応答を処理して必要なデータを抽出できます。 GraphQL レスポンスを処理するサンプル コードは次のとおりです。

$data = $response->getData();

$user = $data['user'];

$id = $user['id'];
$name = $user['name'];
$email = $user['email'];
$posts = $user['posts'];

foreach ($posts as $post) {
    $postId = $post['id'];
    $postTitle = $post['title'];
    $postContent = $post['content'];
}
ログイン後にコピー

上記のコードでは、まずレスポンスから GraphQL データを抽出し、それをローカル変数 $data に保存します。また、データから「user」オブジェクトを抽出し、ローカル変数 $user に保存しました。最後に、ID、名前、電子メール、投稿のリストなどの必要なプロパティをユーザー オブジェクトから抽出し、ループを使用して投稿を反復処理して抽出しました。

結論

これで、PHP で GraphQL API を使用する方法のベスト プラクティスを学びました。 GraphQL ライブラリと Guzzle HTTP クライアントを使用すると、GraphQL サーバーと簡単に通信し、PHP アプリケーションでデータの取得と操作を実装できます。 GraphQL API を使用して新しいプロジェクトを開発している場合でも、既存の PHP アプリケーションを更新して GraphQL API をサポートしている場合でも、コードのパフォーマンスと保守性の両方を確保するために、上記のベスト プラクティスを採用することをお勧めします。

以上がPHP で GraphQL API を使用する方法のベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート