页面限制

如何请求超过 50 个 JSON:API 资源。


JSON:API 每个页面最多只能获取 50 个资源。您可以阅读更多关于此决定的信息 此处

当使用 Next.js 构建一个解耦站点时,在某些情况下,例如在 getStaticPaths 中,您可能希望获取超过 50 个资源。

我们在 next-drupal 中添加了一个符合规范的覆盖来绕过此限制。

⚠️

提示:如果您的站点具有大量页面,请考虑使用按需生成,使用 fallback: blocking,而不是增加页面限制。

配置

要覆盖页面最大大小,请在您的 Drupal services.yml 文件中设置以下 参数 并清除缓存。

parameters:
next_jsonapi.size_max: 100 // Set your max limit here.

现在您应该能够请求最多 100 个资源,**使用 path 字段作为稀疏字段集中第一个字段**。

示例

以下将返回 50 个项目(JSON:API 硬限制 - 无覆盖)

const articles = await drupal.getResourceCollection("node--article")

以下将返回 10 个项目(无覆盖)

const articles = await drupal.getResourceCollection("node--article", {
"page[limit]": 10,
})

以下将返回 100 个项目(使用 path 覆盖)

const articles = await drupal.getResourceCollection("node--article", {
params: {
"fields[node--article]": "path,title"
}
})

以下将返回 60 个项目(使用 path 覆盖)

const articles = await drupal.getResourceCollection("node--article", {
params: {
"fields[node--article]": "path,title",
"page[limit]": 60,
}
})

以下将返回 100 个项目(next_jsonapi.size_max 硬限制 - 使用 path 覆盖)

const articles = await drupal.getResourceCollection("node--article", {
params: {
"fields[node--article]": "path,title",
"page[limit]": 999,
}
})