bigfork / silverstripe-graphql-batching
为Silverstripe添加基于HTTP的GraphQL操作批处理支持
1.0.0
2022-02-11 16:28 UTC
Requires
- php: ^7.4 || ^8.0
- silverstripe/framework: ^4
- silverstripe/graphql: ^4
This package is auto-updated.
Last update: 2024-09-11 21:53:06 UTC
README
添加了对使用Apollo的BatchHTTPLink
的基本支持,以在单个HTTP请求中发送多个GraphQL操作。
注意:此方法不会并行执行操作 - 它们是按顺序逐个执行的。因此,这并不保证会提高应用程序的性能 - 请自行研究和测试!
安装
composer require bigfork/silverstripe-graphql-batching
用法
为您的模式注册一个新的注入器服务(在下面的示例中,我们使用模式名称default
),然后指向您的GraphQL路由
SilverStripe\Core\Injector\Injector: Bigfork\SilverstripeGraphQLBatching\Controller.default: class: Bigfork\SilverstripeGraphQLBatching\Controller constructor: schema: default handler: '%$SilverStripe\GraphQL\QueryHandler\QueryHandlerInterface.default' batchMax: 10 SilverStripe\Control\Director: rules: 'graphql': '%$Bigfork\SilverstripeGraphQLBatching\Controller.default'
请注意: batchMax
是单个HTTP请求中可以包含的最大操作数。它应与您在客户端代码中创建BatchHttpLink
时设置的batchMax
值匹配(默认为10),并且应尽可能低。此值越高,就越有可能成为DDoS攻击向量:如果您允许某人通过单个HTTP请求运行数十个GraphQL操作,那么过载您的服务器就变得非常简单。