配置
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 。