【问题标题】:Drupal 8 REST PATCH on multiple nodes多个节点上的 Drupal 8 REST PATCH
【发布时间】:2017-03-07 13:46:05
【问题描述】:

我正在尝试为一种内容类型创建多个节点 PATCH。目前我只能修补一个节点:

curl --include \
--request PATCH --user username:password \
--header 'Content-type: application/hal+json' \
--header 'X-CSRF-Token: <obtained from http://my_website.com/rest/session/token>' \
http://my_website.com/node/1862?format=hal_json \
--data-binary '{"_links":{"type":{"href":"http://my_website/rest/type/node/faq"}},"title":[{"value":"Example node title UPDATED!"}],"type":[{"target_id":"faq"}]}'

我想从其他 GET 更新所有“常见问题”内容类型节点,我可以在 http://my_other_website_which_is_my_source.com/api/rest/all_faq_nodes 上生成这些节点

是否可以将 GET 结果添加到 --data-binary? 不幸的是,我试图在 Drupal 网站上获取更多信息,但没有成功。

Drupal 版本:8.2.1

干杯!

【问题讨论】:

  • 请注意,PATCH 是根据定义而不是 RESTful

标签: json rest curl drupal patch


【解决方案1】:

我遇到了类似的问题。我最终创建了一个休息插件来处理多个节点(创建或更新)。

首先,使用drupal控制台生成一个自定义的rest资源插件。我的示例使用 POST 动词。

%>drupal generate:Plugin:rest:resource

然后,在@RestResource 部分,添加/更新以下注释:

serialization_class= ""

https://www.drupal.org/link-relations/create" = "/api/multinodespost

由于没有指定serialization_class,可以传一个json格式的节点数组如:

传递给 post 函数的数据将是规范化形式而不是序列化类类型;因此,您最终会得到二维数组中的规范化数据(详见 Symfony 序列化组件t)。

公共函数帖子($data) { ... }

您可以遍历 $data(二维数组)的元素,并使用 denormalize() 函数将每个元素(标准化数据)转换为 Drupal Entity\Node。

您可以访问我的blog了解详细信息。我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多