Kotlin:Ktor如何将文本作为html响应

时间:2018-09-27 19:46:03

标签: kotlin ktor

我想使用库kotlin-html来生成html而不是kotlinx.html。 该库仅产生html文本:

p("A paragraph").render()
// => <p>A paragraph</p>

但是我找不到如何使用Ktor响应html而不是文本

fun Routing.root() {
    get("/") {
        call.respondText {"<p>A paragraph</p>"}
    }
}

此代码将产生一个带有文本<p>A paragraph</p>的页面,而不是html-page。看来call.respondHtml仅适用于kotlinx.html DSL。如何使用纯文本做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以为ContentType.Text.Html的{​​{1}}参数指定ContentType

respondText
如果没有提供call.respondText("<p>foo</p>", ContentType.Text.Html) ,则默认使用

ContentType.Text.Plain

答案 1 :(得分:0)

Ktor有一个用于处理kotlinx.html的特殊模块,因此您可以使用

call.respondHtml {
    head {
        title { +"Async World" }
    }
    body {
        h1(id = "title") {
            +"Title"
        }
    }
}

在此处查看详细信息:https://ktor.io/servers/features/templates/html-dsl.html