У меня есть веб-сайт Spring, который генерирует html-страницы.
На данный момент путь создания контента: kotlinx.html
-> String
(может быть огромным) -> Mono<String>
->Mono<ServerResponse>
Упрощенный метод:
val response = buildString {
val html = appendHTML()
html.head {
title(endpoint.title)
}
html.body {
h1 {
+"Some header"
}
p {
generateSomeText() // can be suspended/asynchronous
}
}
}
ServerResponse
.ok()
.html()
.syncBody(response)
.awaitSingle()
Вопрос: есть ли у Spring какие-либо неблокирующие опции для добавления строкового содержимого? Например, это любой asyncBody
метод для выполнения вызовов, подобных этому:
ServerResponse
.ok()
.html()
.asyncBody { appendable: Appendable -> // this appendable does direct write to the output buffer
val html = appendable.appendHTML()
html.head {
title(endpoint.title)
}
html.body {
h1 {
+"Some header"
}
p {
generateSomeText() // can be suspended/asynchronous
}
}
}
.awaitSingle()
В этом случае я могу избежать ненужного выделения String
(что является преимуществом 1) и могу связать сопрограмму создания текстового контента с ответом.