Next-Drupal 1.4
2022年6月14日 - @shadcn
四月份,我们发布了 next-drupal 1.3
以及 DrupalClient
,一个功能强大且可定制的 JSON:API 客户端,用于从 Drupal 获取数据。
两个月过去了,DrupalClient
取得了成功。我们看到越来越多的新项目采用了 DrupalClient
,从小型无头项目到大型品牌都在基于 next-drupal 进行构建。
我们的周下载量刚刚突破 1000+ 🎉。
今天,我们宣布发布 next-drupal 1.4
,其中包含了稳定版 DrupalClient 和 JSON:API 的写入操作 (CRUD)。
yarn add next-drupal@latest
DrupalClient
是一个增量升级。您可以安全地将您的网站升级到 next-drupal 1.4.0
,没有任何重大更改。
特性
DrupalClient 现已稳定并可用于生产环境
import { DrupalClient } from "next-drupal"
const drupal = new DrupalClient("https://example.com")
// Fetch articles.
const articles = await drupal.getResourceCollection("node--article")
我们已将 基本入门项目 升级为使用 DrupalClient
。
JSON:API 的写入操作
您现在可以使用 next-drupal
创建、更新、删除和获取 JSON:API 资源。
getResource
const article = await drupal.getResource(
"node--article",
"dad82fe9-f2b7-463e-8c5f-02f73018d6cb"
)
createResource
const article = await drupal.createResource("node--article", {
data: {
attributes: {
title: "Title of Article",
body: {
value: "<p>Content of body field</p>",
format: "full_html",
},
},
},
})
createFileResource
const file = await drupal.createFileResource("file--file", {
data: {
attributes: {
type: "media--image",
field: "field_media_image",
filename: "filename.jpg",
file: await fs.readFile("/path/to/file.jpg"),
},
},
})
updateResource
const article = await drupal.updateResource(
"node--article",
"a937dd34-5407-4fff-8594-fccaaa5bb72a",
{
data: {
attributes: {
title: "Title of Article",
},
},
}
)
deleteResource
const deleted = await drupal.deleteResource(
"node--article",
"a937dd34-5407-4fff-8594-fccaaa5bb72a"
)
支持更多身份验证方法
DrupalClient
支持多种身份验证类型。您可以使用 Bearer 令牌、Basic 令牌或提供您自己的授权标头。
现在可以在客户端全局设置身份验证,或者在每个方法中自定义设置。
客户端身份验证
设置将在客户端使用的全局身份验证。
import { DrupalClient } from "next-drupal"
export const drupal = new DrupalClient(
process.env.NEXT_PUBLIC_DRUPAL_BASE_URL,
{
auth: // Configure the global auth here.
}
)
方法身份验证
为每个方法调用提供自定义身份验证。
import { drupal } from "lib/drupal"
const userArticles = await drupal.getResourceCollection("node--article", {
params: {
"filter[uid]": user.id,
},
withAuth: // Set the custom auth here.
})
我们还添加了对 clientId/clientSecret
、username/password
、callback
和 **NextAuth.js** 身份验证方法的支持。
新的文档站点
文档站点已进行了升级。每个文档、指南和示例都已针对 DrupalClient
进行了重写。
我们还为每个方法添加了 API 参考和示例。
const resource = await drupal.getResource<T = JsonApiResource>(
type,
uuid,
options?: {
params,
withAuth,
deserialize,
locale,
defaultLocale,
withCache,
}
): Promise<T>
type: string
- 必填
- 资源类型。例如:
node--article
、taxonomy_term--tags
或block_content--basic
。
uuid: string
- 必填
- 资源的 ID。例如:
15486935-24bf-4be7-b858-a5b2de78d09d
。
options
- 可选
params: JsonApiParams
: JSON:API 参数,例如filter
、fields
、include
或sort
。withAuth: boolean | DrupalClientAuth
:- 设置要使用的身份验证方法。请参阅 身份验证文档。
- 设置为
true
以使用在客户端配置的身份验证方法。
deserialize: boolean
: 设置为 false 以返回原始 JSON:API 响应。locale: string
: 获取资源的语言环境。defaultLocale: string
: 站点的默认语言环境。withCache: boolean
: 如果您希望将资源存储到缓存并从缓存中检索,请设置withCache
。cacheKey: string
: 要使用的缓存键。
您可以 在此处 找到旧的文档站点。
Umami 演示
我们使用 next-drupal
将 Umami 演示重建为一个无头站点
- 翻译支持
- 联系表单
- 搜索
- 身份验证
- 通过 JSON:API 创建新文章
- 使用 Tailwind CSS 重构样式
- 💯 Lighthouse 分数
您可以在 此处 查看演示。
升级
您可以按照我们的升级指南 此处 立即试用新的 DrupalClient
。