PHP API開発におけるGraphQL APIの扱い方

WBOY
リリース: 2023-06-17 13:04:01
オリジナル
853 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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