overblog / graphql-subscription
GraphQL 原生订阅。
dev-master
2020-05-12 18:01 UTC
Requires
- php: >=7.1
- ext-json: *
- psr/log: ^1.0
- symfony/mercure: >=0.2.0
- webonyx/graphql-php: *
Requires (Dev)
- lcobucci/jwt: ^3.2
- overblog/graphql-bundle: >=0.11
- phpstan/extension-installer: ^1.0
- phpstan/phpstan-phpunit: ^0.11
- phpstan/phpstan-shim: ^0.11.19
- phpstan/phpstan-symfony: ^0.11
- phpunit/phpunit: ^7.2
- symfony/framework-bundle: >=3.4
- symfony/messenger: >=4.0
- symfony/yaml: >=3.4
Suggests
- nelmio/cors-bundle: To manage CORS prefight
This package is auto-updated.
Last update: 2024-09-22 16:06:38 UTC
README
这个库允许使用 GraphQL 订阅通过 Mercure 协议,与任何 GraphQL PHP 实现。它自带一个 Symfony 桥接器,因此可以轻松与 OverblogGraphQLBundle 或 API Platform 或基于 GraphQL PHP 的其他 Symfony 实现相结合。
安装
composer req overblog/graphql-subscription
默认构建器执行器
<?php use GraphQL\Executor\ExecutionResult; use GraphQL\GraphQL; function ( $schema, $source, $rootValue = null, $context = null, $variableValues = null, ?string $operationName = null ): ExecutionResult { return GraphQL::executeQuery(...func_get_args()); }
CORS 预检头
此库不原生处理 CORS 预检头。
Symfony
不使用 flex 进行安装
将 OverblogGraphQLSubscriptionBundle 添加到您的应用程序内核中
public function registerBundles() { $bundles = [ // ... new Overblog\GraphQLSubscription\Bridge\Symfony\OverblogGraphQLSubscriptionBundle(), // ... ]; // ... }
配置
Symfony Flex 生成
-
默认配置在
config/packages/graphql_subscription.yaml
中。overblog_graphql_subscription: topic_url_pattern: "http://localhost:8000/subscriptions/{channel}/{id}.json" mercure_hub: # Will use the mercure bundle default publisher handler_id: ~ # Uncomment to use without mercure bundle # url: "https://mercure.roks/hub" # publish: # secret_key: "!mySuperPublisherSecretKey!" # Uncomment to expose public hubUrl on start in payload # public_url: "https://mercure.roks/hub" subscribe: secret_key: "!mySuperSubscriberSecretKey!" # Uncomment to modify storage filesystem default path # storage: # path: "%kernel.project_dir%/var/graphql-subscriber" # The graphql query handler # for OverblogGraphQLBundle: "Overblog\\GraphQLBundle\\Request\\Executor::execute" # for API-Plateform: "api_platform.graphql.executor::executeQuery" graphql_executor: ~ schema_builder: ~
-
默认路由在
config/routes/graphql_subscription.yaml
中overblog_graphql_subscription_endpoint: resource: "@OverblogGraphQLSubscriptionBundle/Resources/config/routing/single.yaml" prefix: /subscriptions # Only for Symfony >= 4.2 # trailing_slash_on_root: false # Uncomment to enabled multiple schema #overblog_graphql_subscription_multiple_endpoint: # resource: "@OverblogGraphQLSubscriptionBundle/Resources/config/routing/multiple.yaml" # prefix: /subscriptions
处理 CORS 预检头
建议使用 NelmioCorsBundle 来管理 CORS 预检,请 遵循说明进行安装。
以下是一个假设订阅端点是 /subscriptions
的配置
nelmio_cors: defaults: origin_regex: true allow_origin: ['%env(CORS_ALLOW_ORIGIN)%'] allow_methods: ['GET', 'OPTIONS', 'POST'] allow_headers: ['Content-Type'] max_age: 3600 paths: '^/subscriptions': ~