如果你想要在手機App中同時也可以架設起一個Restful server怎麼做呢?
Ktor
可以參考由Kotlin提供個一個framwork
可以參考這篇文章,這也是唯一我找到可以教學在Android執行ktor的方法(其實跟windows端架設的方式是一樣的)
像是這樣在你的App中執行就可以了,startActivity的地方
// onCreate
embeddedServer(Netty, 8080) {
install(ContentNegotiation) {
gson {}
}
routing {
get("/") {
call.respond(mapOf("message" to "Hello world"))
}
}
}.start(wait = true)
而由於他是一個會卡住main Thread的start,所以快速可以先加上一個簡單的Thread
Thread{
embeddedServer(Netty, 8080) {
install(ContentNegotiation) {
gson {}
}
routing {
get("/") {
call.respond(mapOf("message" to "Hello world"))
}
}
}.start(wait = true)
}.start()
接著在你的手機瀏覽器輸入
http://127.0.0.1:8080
就可以看到結果
而未來就可以改成鎖有程式碼都在App中執行,透過ADB連接電腦去顯示需要顯示的資訊就可以,將會非常方便
如果想要使用responseHtml該怎麼寫?
可以引用官方提供的一個html template
dependencies {
implementation "io.ktor:ktor-html-builder:$ktor_version"
}
接著你就可以在原本的response改成 responseHtml並且使用HTML DSL方式撰寫
call.respondHtml {
head {
title { +"Async World" }
}
body {
h1(id = "title") {
+"Title"
}
}
}
譬如sample
routing {
get("/") {
call.respond(mapOf("message" to "Hello world"))
}
get("/hello"){
call.respondHtml {
head{
title{ + "" }
}
body{
h1{
+"Android Ktor Demo"
}
p{
+"Hello World"
}
}
}
}
}
這概念可以看我之前另一篇文章
這個概念是在windows上跑ktor,然後透過adb進行回傳,而ktor跑在android
上架構將會更加方便,未來有實作在分享
Done.