创建资源 (POST)

如何使用 DrupalClient 创建 JSON:API 资源。


⚠️

next-drupal ^1.4.0 中提供了 createResourcecreateFileResource 辅助函数。

DrupalClient 提供了 createResourcecreateFileResource 方法来创建 JSON:API 资源。


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",
},
},
},
})

创建包含关联关系的资源

创建包含媒体字段的文章。

const article = await drupal.createResource("node--article", {
data: {
attributes: {
title: "Title of Article",
body: {
value: "<p>Content of body field</p>",
format: "full_html",
},
},
relationships: {
field_media_image: {
data: {
type: "media--image",
id: media.id,
},
},
},
},
})

请参阅 createResource API 参考


createFileResource

要创建文件资源,请使用父实体上文件字段的名称。

例如:一个名为 field_media_image 的文件字段的 media--image

const file = await drupal.createFileResource("file--file", {
data: {
attributes: {
type: "media--image", // <-- The type of the parent resource.
field: "field_media_image", // <-- The name of the field on the parent resource.
filename: "filename.jpg",
file: await fs.readFile("/path/to/file.jpg"),
},
},
})

这将创建一个 file--file 资源。

然后,您可以使用它创建一个新的 media--image,并与 file--file 建立关联关系。

const media = await drupal.createResource<DrupalMedia>("media--image", {
data: {
attributes: {
name: "Name for the media",
},
relationships: {
field_media_image: {
data: {
type: "file--file",
id: file.id,
},
},
},
},
})

请参阅 createFileResource API 参考


身份验证

要创建资源时进行身份验证请求,请使用 withAuth 选项。

请参阅 身份验证文档,了解受支持的身份验证方法。

const article = await drupal.createResource(
"node--article",
{
data: {
attributes: {
title: "Title of Article",
body: {
value: "<p>Content of body field</p>",
format: "full_html",
},
},
}
},
{
withAuth: // <-- Your auth method here.
}
)