xaddax/webonxy-middleware

此包已被废弃且不再维护。作者建议使用zestic/webonxy-middleware包代替。

Webonxy GraphQL 中间件

v1.0.0 2024-07-24 20:16 UTC

This package is auto-updated.

Last update: 2024-07-24 20:19:19 UTC


README

要在 Laminas Mezzio 中使用此中间件,请配置

config/autoload/dependencies.global.php

return [
    'dependencies' => [
        'factories'  => [
            \GraphQL\Server\StandardServer::class => \Xaddax\GraphQL\Factory\StandardServerFactory::class,
            \Zestic\GraphQL\Middleware\GraphQLMiddleware::class => \Xaddax\GraphQL\Factory\GraphQLMiddlewareFactory::class,
        ],
    ],
];

config/autoload/graphql.global.php 中添加配置

return [
    'graphQL' => [
        'middleware' => [
            'allowedHeaders' => [
                'application/graphql',
                'application/json',
            ],
        ],
        'schema' => \Path\To\Schema::class, // optional, defaults to webonxy Schema
        'schemaConfig' => [], // optional, if not configured expected in Schema class constructor
        'server' => \Path\To\Server::class, // not yet implemented, defaults to webonxy StandardServer
        'serverConfig' => [
            'context' => \Zestic\GraphQL\Context\TokenContext::class
            'schema' => \Path\To\Your\Schema::class, 
        ],
    ],
];

有关服务器配置的完整选项,请参阅WebOnyx 服务器配置文档

您需要设置路由。在 config/routes.php

return function (Application $app, MiddlewareFactory $factory, ContainerInterface $container) : void {
    $app->post('/graphql', \Zestic\GraphQL\Middleware\GraphQLMiddleware::class, 'graphql');
};

Schema 定义语言

您还可以使用如WebOnxy 文档中所述的 Schema 定义语言。

config/autoload/graphql.global.php 中,将 serverConfig 中的 schema 改为 generatedSchema

return [
    'graphQL' => [
        'serverConfig' => [
            'schema' => 'generatedSchema',
        ],
    ],
];

然后在 graphQL 配置中添加 generatedSchema 配置

return [
    'graphQL' => [
        'generatedSchema' => [
            'parserOptions' => [
                'experimentalFragmentVariables' => true, // to parse fragments
                'noLocation' => false, // default, set true for development
            ],
            'cache' => [
                'alwaysEnabled' => false, // default, set to true to cache when the system cache is not enabled
                'directoryChangeFilename' => 'directory-change-cache.php', // default
                'schemaCacheFilename' => 'schema-cache.php', // default 
            ],
            'schemaDirectories' => [
                '/full/path/to/schema-directory-1',
                '/full/path/to/schema-directory-2',
            ],
        ],
    ],
];

有关 parserOptions 的文档,请参阅文档

缓存数据存储在 data/cache/graphql 中。