有人搞错了一点,kotlin 的很多 dsl 语法之类的并不是标准库的东西,而是 kotlinx 库的,比如协程
kotlin 因为语法的强大,可以自行写出来很多 java 做不到或者实现很困难的语法糖
与其说看不懂语法糖,不如说不想学新的类库而已
何况用 dsl 写程序就是未来趋势,毕竟广大 spring boy 天天在用的 spring 都有 router function 了
今天写的一点代码
@
Bean fun coRoutes() = coRouter {
GET("/queryLog") { req ->
val ipMono = nullable {
val ip = req.queryParamOrNull("ip").bind()
val vo = loggerService.queryLogByIp(ip)
vo?.let { ok().bodyValue(it) } ?: status(404).build()
}
val codeMono = nullable {
val code = req.queryParamOrNull("code").bind()
val vo = loggerService.queryLogByCode(code)
vo?.let { ok().bodyValue(it) } ?: status(404).build()
}
val badMono = status(400).bodyValue("bad request")
return@GET (ipMono ?: codeMono ?: badMono).awaitSingle()
}
GET("/sse") {
val flux = loggerService.sse().map { it.t2 }
ok().contentType(MediaType.TEXT_EVENT_STREAM)
.body(flux).awaitSingle()
}
}