【问题标题】:How to create custom JSON-API resource drupal 8如何创建自定义 JSON-API 资源 drupal 8
【发布时间】:2021-07-18 23:03:53
【问题描述】:

我在创建自定义 JSON API 资源时遇到问题,该资源将在 mydrupalsite/jsonapi 链接上可见。 我找到了这个例子:

https://glamanate.com/blog/using-json-api-query-your-search-api-indexes

它展示了如何创建自定义资源,但它已经过时了。我试图在这篇文章中制作一个自定义模块,但它不再起作用,因为 json-api 模块已经改变。

例如,我想显示所有节点并制作节点类型的 jsonapi 端点——所有这些都将为我的 Drupal 站点的所有节点提供服务。

我正在使用 drupal 8.7.1 和 JSON API 核心模块。

我尝试用谷歌搜索这个问题,但没有创建自定义 json api 端点的示例。

对于最终结果,我想制作 jsonapi 端点,例如:mydrupalsite/jsonapi/nodes/all 将为所有节点提供服务。

【问题讨论】:

    标签: drupal


    【解决方案1】:

    您可以在自定义模块中声明 REST 端点。

    在/modules/custom/mymodule/src/Plugin/rest/resrouce/MyEndPoints.php中,根据https://www.drupal.org/docs/8/api/restful-web-services-api/custom-rest-resources创建一个扩展ResourceBase的类。

    然后您可以定义要公开的节点集,使用查询参数来过滤它们、分页或做任何您想做的事情。

    另请参阅:https://medium.com/@emerico/create-custom-rest-resource-for-get-and-post-method-in-drupal-8-e445330be3ff

    我成功地使用了这种技术来让FullCalendar库显示的事件,如果有帮助,我可以详细说明。

    祝你好运

    【讨论】:

    • 是的,我知道如何使用 REST 添加自定义资源端点。我一直在寻找 JSON-API 模块的解决方案,因为我的前端在 Gatsby.js 中,所以我正在使用使用 JSON-API 模块的 gatsby-source-drupal 插件提取 drupal 内容。感谢你的回复!我希望创建自定义资源将很快添加到 JSON-API 模块中。
    【解决方案2】:

    根据 JSON:API 的模块维护者,该模块目前不支持与其仅供内部使用的 API 的外部连接,因此您引用的模块不再工作。

    您要求的混合捆绑包有计划。请参阅下面的主题进行讨论。

    https://www.drupal.org/project/jsonapi_extras/issues/2956414

    【讨论】:

    • 感谢您的回复!我希望它很快就会被添加到 JSON-API 模块中。
    【解决方案3】:

    结帐JSON:API Cross Bundles

    我们在 Decoupled Days 2019 中讨论了这个问题。我们得出了以下结论 结论:

    • 根据我的要求,我们将把它放在不同的贡献下☺️jsonapi_cross_bundles
    • 将仅支持 GET
    • 过滤中的边缘情况将使用实体查询 API 使用的任何立场来解决。
    • 同时,我们将创建一个 JSON:API 问题以向 404 路由添加有效负载,例如 /jsonapi/node,其中将包含:(a) 链接列表 到该实体类型的资源类型,以及 (b) 链接到 解释交叉捆绑情况的文档页面(甚至可能 提到实验性的jsonapi_cross_bundles 模块)。

    来源:https://www.drupal.org/project/jsonapi_extras/issues/2956414#comment-13189872

    【讨论】:

      【解决方案4】:

      截至 2021 年,最好的方法是JSON:API Resources module

      此模块允许您在自定义模块中添加自己的 JSON:API 端点。

      有几个examples of how to define your own resources

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-31
        • 1970-01-01
        • 2022-10-04
        • 2019-10-02
        • 2018-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多