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.