批量HTTP链接
将多个操作批量到一个HTTP请求中
概述
在BatchHttpLink
GraphQL操作批处理为单个HTTP请求,发送到单一的GraphQL端点。
import { BatchHttpLink } from "@apollo/client/link/batch-http";const link = new BatchHttpLink({uri: "https://127.0.0.1:4000/graphql",batchMax: 5, // No more than 5 operations per batchbatchInterval: 20 // Wait no more than 20ms after first batched operation});
BatchHttpLink
作为结束链接而不是使用 HttpLink
, Apollo Client 将自动批量执行 GraphQL 操作,并根据您提供的 批量选项 将它们传输到您的服务器。
选项
构造函数 BatchHttpLink
接受一个配置对象,支持以下选项:
名称 / 类型 | 描述 |
---|---|
批量选项 | |
| 每次批次中包含的最大操作数。 默认值是 |
| 在发送每个批次请求之前等待的最大毫秒数。如果在此间隔之前已将 默认值是 |
| 如果
默认值是 |
| 接受操作作为参数并返回一个字符串密钥的函数,该密钥唯一地命名了操作所属的批处理。 |
HTTP 选项 | |
| 发送请求的 GraphQL 端点的 URL。也可以是一个函数,该函数接受一个 默认值是 |
| 如果为 true,则将 默认值是 |
| 代替直接调用 Fetch API 在发送 HTTP 请求到您的 GraphQL 端点时使用的函数。该函数必须与 默认情况下,除非您的运行时环境中没有 Fetch API,否则将使用 Fetch API。 查看 自定义 |
| 一个代表将在每个HTTP请求中包含的headers的对象,例如 |
| 如果设置为true,则不会自动将header名称转换为小写。这允许非http-spec-compliant服务器可能预期使用大写header名称。 默认值是 |
| 为每个 |
| 一个包含用于每个 注意,如果您将 |
上下文
批处理HTTP链接当前以两种不同的方式使用上下文,按批次和按 查询。以下字段是在批次中使用的上下文字段,并来自批次的第一个 operation。
选项 | 描述 |
---|---|
headers | 一个表示发送到请求header的值的对象 |
credentials | 表示你想要在fetch调用中使用的认证策略的字符串 |
uri | 你想要从其获取的端点的字符串 |
fetchOptions | 传递给fetch调用的fetch选项参数的任何覆写 |
response | 这是fetch请求创建后得到的原始响应 |
对于每个query,http
字段用于修改批处理中的每个单个query,例如持久化查询以下是。
Persisted queries
批处理HTTP链接支持高级GraphQL功能,称为持久化查询。这允许您通过线发送字符串化的query,而不发送查询的某种标识符。要支持此功能,您需要将id附加到extensions字段中,并将以下选项传递到上下文中:
operation.setContext({http: {includeExtensions: true,includeQuery: false,}})
从上下文的http
对象:
includeExtensions
:发送请求中的extensions对象。includeQuery
:不要发送请求中的query
字段。
查看http 选项字段 获取更多信息。
使用 持久化查询 的方法之一是使用 apollo-link-persisted-queries 和 Apollo Server。
自定义抓取
查看 自定义 fetch
。