반업주부의 일상 배움사
[PHP] Codeigniter 에 GraphQL 적용하기 본문
반응형
컴포저로 GraphQL을 추가해요.
composer require webonyx/graphql-php
라우트 설정하고요.
$route['graphql'] = '/graphql_ctl';
controllers 폴더에 Graphql_ctl.php를 만들어요.
<?php defined('BASEPATH') OR exit('No direct script access allowed');
use GraphQL\Type\Definition\Type;
class Graphql_ctl extends Graphql_Controller
{
//=====================================================
//
// Constructor
//
//=====================================================
public function __construct()
{
parent::__construct();
}
//=====================================================
//
// Public Methods
//
//=====================================================
/**
* Painterus 홈페이지
*/
public function index()
{
return [
'echo'=>[
'type'=> Type::string(),
'args'=> [
'message' => Type::nonNull(Type::string()),
],
'resolve'=> function($root, $args){
return $root['prefix'] . $args['message'];
}
],
'randomint'=>[
'type'=>Type::int(),
'args'=>[
'min' => [
'type'=>Type::int(),
'defaultValue'=> 0
],
'max' => [
'type'=>Type::int(),
'defaultValue'=>10
],
],
'resolve'=>function($root, $args){
return rand(
$args['min'],
$args['max']
);
}
]
];
}
public function rootValue()
{
return ['prefix' => 'You said: '];
}
}
core 에 파일을 만들어요.
require_once 'vendor/autoload.php';
class Graphql_Controller extends MY_Controller
{
public function __construct()
{
parent::__construct();
try{
$queryType = new GraphQL\Type\Definition\ObjectType([
'name' => 'Query',
'fields'=> $this->index(),
]);
$schema = new GraphQL\Type\Schema([
'query'=> $queryType
]);
$query = ...POST로 받기
$variableValues = ...POST로 받기
$result = GraphQL\GraphQL::executeQuery($schema, $query, $this->rootValue(), NULL, $variableValues);
$output = $result->jsonSerialize();
} catch (Exception $e) {
$output = [
'errors' => [
[
'message' => $e->getMessage(),
'code' => $e->getCode()
]
]
];
} finally {
$this
->output
->set_content_type('json')
->set_output(json_encode($output));
}
}
public function rootValue()
{
return [];
}
}
끝났어요. 포스트맨으로 호출해보죠. (https://~/graphql)
반응형
LIST
'IT 인터넷 > PHP' 카테고리의 다른 글
PHP를 ChatGPT에게 배우다. (0) | 2023.02.07 |
---|---|
[PHP] VSCode에서 더블 클릭으로 변수명 $까지 선택하기 (0) | 2021.04.19 |
[PHP] ["response":protected] 사용하기 (0) | 2020.10.06 |
[PHP] POST로 다른 URL 호출하기 (0) | 2020.09.17 |
[PHP] node-fetch 에서 보낸 POST 데이터 읽기 (0) | 2020.07.29 |
Comments