配置

DrupalClient 的初始化和选项。


初始化

要创建一个新的 DrupalClient,请使用以下初始化

import { DrupalClient } from "next-drupal"
const drupal = new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL)

其中 NEXT_PUBLIC_DRUPAL_BASE_URL 是您 Drupal 网站的 URL,定义为一个 环境变量.

.env.local

NEXT_PUBLIC_DRUPAL_BASE_URL=http://example.com

选项

在初始化期间可以传递额外的选项来自定义客户端的行为。

apiPrefix

  • 默认值: /jsonapi
  • 必需: 否

要使用的 JSON:API 前缀。如果您使用的是 JSON:API Extras 模块,您可以自定义 JSON:API 前缀并在此处设置自定义值。

new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, {
apiPrefix: "/api",
})

frontPage

  • 默认值: /home
  • 必需: 否

使用此选项设置首页路径。此路径将在您的 Next.js 站点上解析为 /

new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, {
frontPage: "/front",
})

auth

  • 默认值: null
  • 必需: 否

覆盖默认身份验证。您可以使用此选项来实现您自己的自定义身份验证。

您可以在 此处 找到有关使用自定义身份验证的更多信息。


serializer

  • 默认值: 内置
  • 必需: 否

覆盖默认数据序列化器。您可以使用此选项添加您自己的 JSON:API 数据反序列化器。

import { Deserializer } from "jsonapi-serializer"
const customSerializer = new Deserializer({
keyForAttribute: "camelCase",
})
new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, {
serializer: customSerializer,
})

您可以在 此处 找到有关使用自定义序列化器的更多信息。


fetcher

  • 默认值: fetch
  • 必需: 否

覆盖默认获取器。

import crossFetch from "cross-fetch"
const customFetcher = (url, options) => {
const { withAuth, ...opts } = options
if (withAuth) {
// Make additional requests to fetch a bearer token
// Or any other Authorization headers.
}
return crossFetch(url, {
...opts,
})
}
new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, {
fetcher: customFetcher,
})

您可以在 此处 找到有关使用自定义获取器的更多信息。


cache

  • 默认值: null
  • 必需: 否

实现一个自定义缓存,用于在构建过程中缓存数据。

import { DataCache } from "next-drupal"
import Redis from "ioredis"
const redis = new Redis(process.env.REDIS_URL)
export const redisCache: DataCache = {
async set(key, value) {
return await redis.set(key, value)
},
async get(key) {
return await redis.get(key)
},
}
new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, {
cache: redisCache,
})

您可以在 此处 找到有关使用自定义缓存的更多信息。


logger

  • 默认值: console
  • 必需: 否

实现一个自定义记录器。您可以使用此选项将日志发送到第三方服务。


withAuth

  • 默认值: false
  • 必需: 否

设置客户端是否应默认使用经过身份验证的请求。如果设置为 true,所有对 Drupal 的调用都将使用配置的身份验证。


useDefaultResourceTypeEntry

  • 默认值: false
  • 必需: 否

默认情况下,客户端将向 JSON:API 发出请求以检索索引。

如果您的资源遵循 entity_type--bundle 命名约定,您可以安全地将其关闭并使用资源名称中的默认入口点。


previewSecret

  • 默认值: null
  • 必需: 否

用于预览模式的密钥。


headers

  • 默认值: { "Content-Type": "application/vnd.api+json", Accept: "application/vnd.api+json" }
  • 必需: 否

为获取器设置自定义标头。

new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, {
headers: {
"Content-Type": "application/json",
},
})

accessToken

  • 默认值: null
  • 必需: 否

您可以直接在客户端上设置的长期访问令牌。


forceIframeSameSiteCookie

⚠️

仅在开发中使用 forceIframeSameSiteCookie

  • 默认值: false
  • 必需: 否

如果您在开发中运行您的网站,并且主机地址与 iframe 预览不同,您可能会遇到 SameSite cookie 的问题。

您可以使用此选项强制将 cookie 设置为 SameSite=None,Secure(在**开发**中)。

export const drupal = new DrupalClient(
process.env.NEXT_PUBLIC_DRUPAL_BASE_URL,
{
forceIframeSameSiteCookie: process.env.NODE_ENV === "development",
}
)

有关更多信息,请参阅:https://github.com/vercel/next.js/discussions/32238


debug

  • 默认值: false
  • 必需: 否

使用此选项打开内置记录器。如果您想用您自己的记录器替换它,请参阅 #logger