>  기사  >  백엔드 개발  >  PHP API 개발에서 GraphQL API를 처리하는 방법

PHP API 개발에서 GraphQL API를 처리하는 방법

WBOY
WBOY원래의
2023-06-17 13:03:11819검색

웹 애플리케이션이 지속적으로 개발되면서 API(애플리케이션 프로그래밍 인터페이스)의 사용이 점점 더 보편화되고 있습니다. 웹 애플리케이션의 핵심인 API를 사용하면 서로 다른 애플리케이션이 서로 통신하고 데이터를 공유할 수 있습니다. PHP 개발에서 GraphQL API는 기존 RESTful API보다 더 유연하고 효율적일 수 있어 점점 더 널리 사용되는 개발 방법이 되었습니다.

GraphQL은 Facebook에서 개발한 API 쿼리 언어로, 이를 통해 클라이언트는 서버에서 필요한 정확한 데이터를 얻을 수 있습니다. 기존 RESTful API에 비해 GraphQL은 더 유연하고 효율적이며 애플리케이션과 서버 간의 통신량을 크게 줄일 수 있습니다. 이 글에서는 PHP에서 GraphQL API를 개발하고 처리하는 방법을 살펴보겠습니다.

첫 번째 단계는 GraphQL API의 작동 방식을 이해하는 것입니다. GraphQL API의 핵심은 쿼리 가능하고 변경 가능한 데이터 유형과 작업을 정의하는 스키마(스키마)입니다. 클라이언트는 GraphQL 쿼리 언어를 사용하여 서버에 요청을 제출하여 필요한 데이터를 쿼리할 수 있습니다. 서버는 GraphQL Schema에 따라 작업을 해석하고 클라이언트가 요구하는 데이터를 반환합니다. graphql-php는 GraphQL API를 보다 편리하게 개발할 수 있도록 도와주는 PHP 라이브러리입니다.

GraphQL API 개발의 첫 번째 단계는 스키마를 생성하는 것입니다. 쿼리 가능하고 변경 가능한 데이터 유형과 작업이 포함된 스키마를 정의해야 합니다. 스키마에는 일반적으로 쿼리 개체, 변경 개체, 입력 개체 및 스칼라 유형이 포함됩니다.

그 중 쿼리 개체는 클라이언트가 쿼리할 수 있는 데이터를 나타내고, 변경 개체는 클라이언트가 서버에 제출할 수 있는 데이터를 나타냅니다. 값, 정수, 부동 소수점 숫자 및 기타 기본 데이터 유형입니다.

스키마를 생성하는 과정에서 각 객체와 필드의 유형과 매개변수를 지정해야 합니다. 예를 들어 다음은 간단한 쿼리 개체입니다.

type Query {
  hello: String!
}

이 쿼리 개체는 문자열 형식의 hello 필드를 쿼리할 수 있음을 나타냅니다. 느낌표는 이 필드가 필수이며 null을 반환할 수 없음을 나타냅니다.

다음으로 각 객체 또는 필드에 대한 데이터 수집 및 변경 처리를 담당하는 Resolver(파서)를 정의해야 합니다. Resolver는 요청 및 컨텍스트 정보를 수신한 다음 쿼리 결과를 반환해야 하는 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를 개발하려면 스키마를 정의하고, Resolver를 작성하고, HTTP 요청 핸들러를 생성해야 합니다. GraphQL API는 높은 유연성과 높은 효율성이라는 장점을 가지고 있습니다. 따라서 PHP 개발에서 유연하고 효율적인 API를 구축해야 한다면 GraphQL API는 의심할 여지 없이 좋은 선택이 될 것입니다.

위 내용은 PHP API 개발에서 GraphQL API를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.