隨著專案功能的增加,我們對外開放的 route 也會越來越多。
今天我們來談談怎麼調整我們的 route
首先,我們可以將相關的 route 放在同一個 function 裡面,比方說:
把
get("/foo/bar") { … } // (1)
get("/foo/baz") { … } // (2)
get("/foo/baz/qux") { … } // (3)
改成
route("/foo") {
get("bar") { … } // (1)
route("baz") {
get { … } // (2)
get("qux") { … } // (3)
}
}
隨著功能的增加,把這些邏輯都寫在 Application.kt
並不是一個好的做法,複雜度有一點提高。
不過有的讀者可能會發現,這些程式並不是常見的 OOP 架構,所以不完全適用我們熟知的重構技法。
Ktor 這個框架更多的是利用函式編程(functional programming)的方式撰寫邏輯,所以在這部分,我們要做的是將邏輯拆分到不同的函式裡面,藉此減低複雜度。
例如,我們可以把之前看過的 /html-dsl
get("/html-dsl") {
call.respondHtml {
body {
h1 { +"HTML" }
ul {
for (n in 1..10) {
li { +"$n" }
}
}
}
}
}
移動到別的函式。