加入我们,从10月8日至10日在纽约市,了解关于GraphQL联盟和API平台工程的最新技巧、趋势和新闻。加入2024年纽约市的GraphQL峰会
文档
免费开始

批量HTTP链接

将多个操作批量到一个HTTP请求中


概述

BatchHttpLink操作批处理为单个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 batch
batchInterval: 20 // Wait no more than 20ms after first batched operation
});

BatchHttpLink 作为结束链接而不是使用 HttpLink 将自动批量执行 GraphQL 操作,并根据您提供的 批量选项 将它们传输到您的服务器。

选项

构造函数 BatchHttpLink 接受一个配置对象,支持以下选项:

名称 /
类型
描述

批量选项

batchMax

数字

每次批次中包含的最大操作数。

默认值是 10

batchInterval

数字

在发送每个批次请求之前等待的最大毫秒数。如果在此间隔之前已将 batchMax 操作批处理,则立即发送请求。

默认值是 10

batchDebounce

布尔值

如果 true,当向批处理添加操作时,重置 batchInterval 计时器。换句话说,下一个批次请求不会发送,直到以下任一情况发生:

  • batchInterval 毫秒内未添加任何操作,或者
  • batchMax 达到。

默认值是 false

batchKey

字符串

接受操作作为参数并返回一个字符串密钥的函数,该密钥唯一地命名了操作所属的批处理。

查看默认函数

HTTP 选项

uri

StringFunction

发送请求的 GraphQL 端点的 URL。也可以是一个函数,该函数接受一个 Operation 对象并返回该操作的字符串 URL。

默认值是 /graphql

includeExtensions

布尔值

如果为 true,则将 extensions 字段包含在每个发送到您的 GraphQL 端点的操作中。

默认值是 false

fetch

函数

代替直接调用 Fetch API 在发送 HTTP 请求到您的 GraphQL 端点时使用的函数。该函数必须与 fetch 的签名一致。

默认情况下,除非您的运行时环境中没有 Fetch API,否则将使用 Fetch API。

查看 自定义 fetch

headers

对象

一个代表将在每个HTTP请求中包含的headers的对象,例如{Authentication: 'Bearer abc123'}

preserveHeaderCase

布尔值

如果设置为true,则不会自动将header名称转换为小写。这允许非http-spec-compliant服务器可能预期使用大写header名称。

默认值是 false

credentials

字符串

为每个fetch调用使用的认证策略。可以是omitincludesame-origin

fetchOptions

对象

一个包含用于每个fetch调用的选项的对象。如果一个特定的选项未包含在此对象中,则使用该选项的默认值。

注意,如果您将fetchOptions.method设置为GETBatchHttpLink将遵循标准的GraphQL HTTP GET编码

查看可用选项

上下文

批处理HTTP链接当前以两种不同的方式使用上下文,按批次和按 。以下字段是在批次中使用的上下文字段,并来自批次的第一个 operation

选项描述
headers一个表示发送到请求header的值的对象
credentials表示你想要在fetch调用中使用的认证策略的字符串
uri你想要从其获取的端点的字符串
fetchOptions传递给fetch调用的fetch选项参数的任何覆写
response这是fetch请求创建后得到的原始响应

对于每个queryhttp 字段用于修改批处理中的每个单个query,例如以下是。

Persisted queries

批处理HTTP链接支持高级GraphQL功能,称为持久化查询。这允许您通过线发送字符串化的query,而不发送查询的某种标识符。要支持此功能,您需要将id附加到字段中,并将以下选项传递到上下文中:

operation.setContext({
http: {
includeExtensions: true,
includeQuery: false,
}
})

从上下文的http对象:

  • includeExtensions:发送请求中的extensions对象。
  • includeQuery:不要发送请求中的query 字段。

查看http 选项字段 获取更多信息。

使用 持久化查询 的方法之一是使用 apollo-link-persisted-queriesApollo Server

自定义抓取

查看 自定义 fetch

上一页
HTTP
下一页
上下文
评价文章评价在 GitHub 上编辑编辑论坛 Discord