GraphQL은 클라이언트가 필요한 데이터를 정확하게 요청하고 결과를보다 효율적으로 요청할 수있는 강력한 API 쿼리 언어 및 런타임 유형 시스템입니다. 이 기사에서는 ThinkPhp6 프레임 워크에서 GraphQL을 사용하여 데이터베이스 쿼리 기능을 구현하는 방법을 자세히 소개합니다.
시작하기 전에 Composer를 통해 GraphQL 관련 구성 요소를 설치해야합니다.
<span class="fun">작곡가에는 오버 블로그/GraphQL-Bundle이 필요합니다</span>
설치가 완료되면 구성 디렉토리에서 GraphQL.php 파일을 작성하고 다음 구성 컨텐츠를 추가하고 기본 모드 및 쿼리 필드를 정의하십시오.
return [
'default_schema' => 'default',
'schemas' => [
'default' => [
'query' => [
'fields' => [
'hello' => [
'type' => 'String',
'resolve' => function () {
return 'Hello, GraphQL!';
}
]
]
]
]
]
];
위의 구성은 고정 문자열을 반환하는 간단한 hello 쿼리 필드를 정의합니다.
다음으로 클라이언트의 GraphQL Query 요청을 수신하고 처리하기 위해 앱/컨트롤러 디렉토리에서 GraphQL.php 컨트롤러를 만듭니다.
namespace app\controller;
use Overblog\GraphQLBundle\Definition\Resolver\ResolverInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class GraphQL
{
public function index(Request $request, ResolverInterface $resolver)
{
$query = $request->request->get('query');
$variables = $request->request->get('variables');
$result = $resolver->resolve($query, $variables);
return new Response(json_encode($result));
}
}
컨트롤러는 요청에서 GraphQL 쿼리를 가져오고, 구문 분석을 위해 Resolver를 호출하고, 결과를 JSON 형식으로 반환합니다.
클라이언트 요청이 GraphQL 인터페이스에 올바르게 액세스하려면 config/lours.php에서 라우팅 구성을 추가해야합니다.
use think\facade\Route;
Route::rule('graphql', 'controller/GraphQL/index');
이 구성은 모든 요청을 /GraphQL 경로로 전달하여 GraphQL 컨트롤러의 인덱스 메소드로 전달됩니다.
위의 단계를 완료하면 테스트를 위해 브라우저를 통해 http : // localhost/graphql에 액세스 할 수 있습니다. 쿼리 편집기 입력에서 :
{
hello
}
쿼리를 실행 한 후 반환 결과는 다음과 같습니다.
{
"data": {
"hello": "Hello, GraphQL!"
}
}
이것은 ThinkPhP6에서 GraphQL의 기본 통합이 성공적 이었다는 것을 보여줍니다.
이 기사에서는 ThinkPhP6 프레임 워크에 GraphQL을 통합하여 유연하고 효율적인 데이터베이스 쿼리 인터페이스를 달성하는 방법을 상세하게 소개합니다. 기본 GraphQL 쿼리 예제는 구성 요소 설치, 구성, 컨트롤러 쓰기 및 라우팅 설정을 통해 완료됩니다. GraphQL은 클라이언트가 요구하는 데이터를 정확하게 반환하여 API의 성능과 확장 성을 향상시킬 수 있습니다. 이 기사가 개발자가 ThinkPhp6과 GraphQL의 조합으로 신속하게 시작하는 데 도움이되기를 바랍니다.