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

Posted

技术标签:

【中文标题】Kotlin:Ktor 如何将文本响应为 html【英文标题】:Kotlin: Ktor how to respond text as html 【发布时间】:2019-03-03 18:57:15 【问题描述】:

我想使用库 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>"
    

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

【问题讨论】:

【参考方案1】:

您可以将ContentType参数指定为ContentType.Text.HtmlrespondText

call.respondText("<p>foo</p>", ContentType.Text.Html)

如果没有提供ContentType,则默认使用ContentType.Text.Plain

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

对不起,我看错了你的问题。但是,让搜索的人在这里找到答案…… 它对我不起作用。出错了。 “找不到具有此名称的参数:id。什么是 id?我必须先实现的变量?

以上是关于Kotlin:Ktor 如何将文本响应为 html的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin Multiplatform - 使用 Ktor 处理响应 http 代码和异常

未找到“响应”类的 Ktor 序列化程序

如何在 Kotlin 的 Ktor 中提取访问权限验证

如何在 Ktor (Kotlin) 中管道的各个部分之间传递数据

从 ktor 提供 kotlin 多平台 javascript

如何使用 ktor kotlin 通过 POST 发送 JSON 字符串?