从外部填充树枝模板 api

Populate twig template from external api

我正在构建一个 Drupal 8 站点,并且是 twig 模板引擎的新手。对于一种特定的内容类型,我想调用外部 restful api 并将一些返回的数据呈现为 twig 模板中的字段。

我有一个内部 ID 可以调用 API,我想嵌入到模板中:

使用 twig 和 drupal 8 可以很容易地做到这一点吗? 作为次要问题,这安全吗?

现阶段的替代方案是编写小型 Drupal 8 模块,但由于页面上没有用户输入,只是从返回的 api 调用中呈现,我认为拥有所有这些模块会更容易在一处。

在 Drupal 7 中,可以将任意 PHP 放入模板,但设计不佳。在 Drupal 8 中,它很难有意地做到。您不应尝试在 Twig 文件中执行任意 PHP 或在请求处理后期进行远程 API 调用。

您应该在到达树枝之前调用API并收集数据。您应该创建一个自定义模块来处理 API 交互并将响应放置在字段、块或其他结构中以在适当的上下文中呈现(通常自定义块很适合这样的事情,但究竟是哪种方法最有意义取决于您的项目)。您还应该记住,任何需要远程 API 调用的页面都可能很慢,除非 API 调用非常简单且非常非常快。 BigPipe 模块可以帮助您解决这些类型的速度问题,但涉及额外的学习曲线。

如果您希望浏览器处理 API 调用,您需要创建一个 div(或类似标记)来放置结果,并将 JavaScript 附加到结构并在大部分页面加载完成后进行实际的 API 调用。

至于安全性:它和你做的一样安全。 Drupal 将提供一些帮助来避免最常见的安全错误,但您仍然可以做一些使其不安全的事情(例如与不受信任的第三方共享数据或假设响应数据始终安全)。