如何创建自定义JSON-API资源drupal 8

时间:2019-06-03 15:01:53

标签: drupal

我在创建自定义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将服务所有节点。

4 个答案:

答案 0 :(得分:0)

根据JSON:API的模块维护者,该模块当前不支持与其内部专用API的外部连接,因此为什么您引用的模块不再起作用。

有您要求的混合包装的计划。有关讨论,请参见下面的线程。

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

答案 1 :(得分:0)

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

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

然后,您可以定义要公开的节点集,使用查询参数对其进行过滤,分页或执行所需的任何操作。

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

我成功地使用了这种技术来使事件显示在FullCalendar库中,如果有帮助,我可以对此进行详细说明。

祝你好运

答案 2 :(得分:0)

结帐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

答案 3 :(得分:0)

截至 2021 年,实现这一目标的最佳方式是 JSON:API Resources module

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

有几个examples of how to define your own resources