【问题标题】:Can I use HTML DSL to return partial HTML documents?我可以使用 HTML DSL 返回部分 HTML 文档吗?
【发布时间】:2021-05-08 10:23:22
【问题描述】:

我正在尝试构建一个 REST API,在其中我使用单个 HTML 元素作为表示而不是完整的文档来发回一些资源。例如,而不是

<html>

  <body>

   <table>....</table>

  </body>

</html>

我只想返回 Table 元素及其内容。

直接将 HTML DSL 与 call.respondHtml 一起使用,我只能创建包含所有样板的完整 HTML 文档。

如果我手动构建一个 XML 文档并尝试使用 call.respondHtml 将其发回,我只会得到一个空的 HTML 文档。

有没有办法在 KTOR 中使用 HTML DSL 做我想做的事情,还是我必须退回到手动序列化 XML 文档?还是使用模板引擎更好?

【问题讨论】:

  • 我个人建议使用一些模板引擎来代替ktor-html-builder,因为后者过于复杂和有限。

标签: kotlin ktor


【解决方案1】:

如果您将表格构建为子模板,则可以将其返回,如下所示:

    call.respondText(
        buildString {
            appendHTML().div {
                insert(TableTemplate(), TemplatePlaceholder())
            }
        }
    )

它不会构建整个 HTML 文档,但您的模板嵌入在另一个 div 中。

相关帖子:ktor - is there a way to serialize sub-template Template<FlowContent> to txt/html?

Ktor 文档:https://github.com/Kotlin/kotlinx.html/wiki/Streaming

【讨论】:

  • 看起来很有希望,我会试一试。感谢您的提示!
猜你喜欢
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 2016-11-12
  • 2018-05-08
  • 2014-08-02
  • 2023-03-26
相关资源
最近更新 更多