GraphQL - AnthraxisBR/swoole-fastwork GitHub Wiki
O FastWork preve internamente uma integração fácil com GraphQL, onde não nenhuma necessidade de configuração do desenvolvedor, e é apenas necessário criar um referência em alguma rota declarada no arquivo config/routes.yaml, e criar os objetos e fields
A base da integração é o projeto: Webonyx/GraphQL-PHP
Após declarar no roteamente a referencia ao objeto GraphQL, será necessário criar as referencias ao Objects e aos Fields no arquivo:
config/graphql-routes.yaml
routes:
users:
function: graphql
object: Users
fields: ['SearchUsers']
A classe referencia de Object deverá ser declarada na pasta:
database/graphql
Seguindo a seguinte regra:
Deve ser criada um pasta com o nome do Object, e dentro dessa pasta crie classe herdada de AnthraxisBR\SwooleFW\graphql\GraphQL.
Dentro dessa pasta, crie uma nova pasta com o nome 'Fields', e la dentro seram declarados os Fields desse Object, um Field deve sempre ser uma herança de AnthraxisBR\SwooleFW\graphql\FwFields.
O Field deve seguir o exemplo:
final class SearchUsers extends FwField
{
public $responses = [
ItemNotFoundException::class => 'Nenhum usuário localizado com o primaryKey: %s',
DatabaseExceptions::class => 'Erro ao comunicar com o banco de dados',
Exception::class => "Um erro não identificado ocorreu ao executar a query"
];
public $type = Type::STRING;
public $args = [
'id' => NonNull::INT
];
public function resolve(array $args)
{
return $this->entity->unique($args['id']);
}
}
Após isso, apenas basta chamar as rotas com o método POST.
Informando no corpo da requisição:
{
"query": "query { SearchUsers(id: 1 ) }"
}
O FastWork se responsabiliza por montar o restante da estrutura.