将路线分割成多个文件

我是KotlinKtor ,下面和我一样正常工作,现在我需要添加更多的Routes ,我怎样才能在多个文件中分割路由?

 package blog import org.jetbrains.ktor.netty.* import org.jetbrains.ktor.routing.* import org.jetbrains.ktor.application.* import org.jetbrains.ktor.features.* import org.jetbrains.ktor.host.* import org.jetbrains.ktor.http.* import org.jetbrains.ktor.response.* import org.jetbrains.ktor.request.* // for recieve import org.jetbrains.ktor.util.* // for ValuesMap import org.apache.commons.mail.* fun Application.module() { install(DefaultHeaders) install(CallLogging) install(Routing) { get("/") { call.respondText(""" My Example Blog2 <form action="/contact-us" method="post"> <input name="subject" placeholder="Subject"> <br> <textarea name="message" placeholder="Your message ..."></textarea> <br> <button>Submit</button> </form> """, ContentType.Text.Html) } post("/contact-us") { val post = call.receive<ValuesMap>() SimpleEmail().apply { setHostName("smtp.gmail.com") setSmtpPort(465) setAuthenticator(DefaultAuthenticator("my_alias@gmail.com", "my_gmil_passoword")) setSSLOnConnect(true) setFrom("my_alias@gmail.com") setSubject(post["subject"]) setMsg(post["message"]) addTo("my_alias@gmail.com") }.send() // will throw email-exception if something is wrong call.respondRedirect("/contact-us/success") } get("/contact-us/success") { call.respondText("Your message was sent", ContentType.Text.Html) } } } fun main(args: Array<String>) { embeddedServer(Netty, 8080, watchPaths = listOf("BlogAppKt"), module = Application::module).start() } 

最后我明白了:

为您需要的函数名称安装路由,如下所示:

 install(Routing) { contact() } 

创建一个像fun Route.contact(){ ..}来处理必要条件的函数,所以对于我的示例,我创建了如下:

 fun Route.contact(){ get("/") { call.respondText(""" My Example Blog 12 <form action="/contact-us" method="post"> <input name="subject" placeholder="Subject"> <br> <textarea name="message" placeholder="Your message ..."></textarea> <br> <button>Submit</button> </form> """, ContentType.Text.Html) } post("/contact-us") { val post = call.receive<ValuesMap>() // val userId = registration["userId"] SimpleEmail().apply { setHostName("smtp.gmail.com") setSmtpPort(465) setAuthenticator(DefaultAuthenticator("my_alias@gmail.com", "my_gmil_passoword")) setSSLOnConnect(true) setFrom("my_alias@gmail.com") setSubject(post["subject"]) setMsg(post["message"]) addTo("my_alias@gmail.com") }.send() // will throw email-exception if something is wrong call.respondRedirect("/contact-us/success") } get"/contact-us/success") { call.respondText("Your message was sent", ContentType.Text.Html) } }