x-graphql / field-middleware

在解析字段前后添加自定义逻辑

0.2.0 2024-03-29 09:41 UTC

This package is auto-updated.

Last update: 2024-08-29 10:44:59 UTC


README

在解析字段前后添加自定义逻辑

unit tests codecov

入门

通过Composer安装此包

composer require x-graphql/field-middleware

用法

创建您的第一个中间件

use GraphQL\Type\Definition\ResolveInfo;
use GraphQL\Type\Schema;
use XGraphQL\FieldMiddleware\MiddlewareInterface;

class MyMiddleware implements MiddlewareInterface {

    public function resolve(mixed $value, array $arguments, mixed $context, ResolveInfo $info, callable $next) : mixed {
        $firstName = $next($value, $arguments, $context, $info);
        
        return $firstName . ' Doe';
    }
}

然后让此中间件应用于模式

use GraphQL\GraphQL;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\Type;
use GraphQL\Type\Schema;
use XGraphQL\FieldMiddleware\FieldMiddleware;

$schema = new Schema([
  'query' => new ObjectType([
    'name' => 'Query',
    'fields' => [
      'name' => Type::string()
    ],
  ]),
]);

FieldMiddleware::apply($schema, [new MyMiddleware()]);

$result = GraphQL::executeQuery($schema, '{ name }', ['name' => 'John']);

var_dump($result->toArray());

致谢

Minh Vuong创建