iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 2
1
Mobile Development

老姐好像要用 Kotlin 寫專案,能撐30天嗎?系列 第 2

夢中打字的第二天:用 IDE 建立專案

「明天、明天就是假日了⋯⋯」身旁的上班族喪屍,是我老姐,在她眼睛已成死魚的情形下,眼鏡只是個裝飾品,完全是聽我聲音指揮路況。也許有點殘忍,但是所謂的個人專案是一旦熄火就別想死灰復燃,所以我還是一到家就開口問專案目標了。

「我當然想好了!問答猜謎遊戲,會員功能,最重要的是錢錢錢收入系統!」

提到錢,那雙眼睛再度恢復光明,甚至散發出幽幽的綠光。

「在你昨晚做夢的時候,我已經在免費專案管理軟體網站 Asana 開任務列表了。」耶?還以為老姐的黑眼圈是昨天熬夜打遊戲來的,原來不是啊。

我點開老姐說的網頁 https://asana.com/ ,登入去看她昨天奮戰的結果。

https://ithelp.ithome.com.tw/upload/images/20200911/20129197pyutv1y2bA.png

https://ithelp.ithome.com.tw/upload/images/20200911/2012919746x8LjKQvM.png

「問答部分大概需要十幾個 API ,會員系統沒特殊要求的話,等後面要架到雲端的時候,直接用那個雲端提供的服務吧。至於收入系統,主程式沒建起來之前,一切都是浮雲啊浮雲。」

老姐沒有否認,或者是已經沒有反駁的力氣,抬起發顫的雙手打開 Android Studio 開始建新專案。

https://ithelp.ithome.com.tw/upload/images/20200911/20129197r1uOSUM4DF.png

初始畫面她平常是選空的自己寫,但這次可能是因為有鼓勵使用者發題的需求,她選了一個有浮動按鈕的模板。

https://ithelp.ithome.com.tw/upload/images/20200911/201291971ojOVQjCZI.png

專案名字用的是她昨天就想好,和 Asana 專案一樣的名字 TurtleSoup ,意思是海龜湯,來自有名的情境猜謎遊戲。Package Name 更是隨意設定,直接放個人名。剩下的都用預設,反正這裡的資訊後面都還能改。開完專案後她直接跑去睡了,獨留我一人孤零零伴隨著電腦風扇的聲音。

https://ithelp.ithome.com.tw/upload/images/20200911/20129197dgKrSeMcMM.png
https://ithelp.ithome.com.tw/upload/images/20200911/20129197wQUXyWHvyr.png

畢竟第一次用 Kotlin 寫 Server ,所以查了一下網路上的資料, Kotlin 後台框架有 Java 時期就在的老字號 Spring Boot 和輕便的 Ktor ,既然這次只是簡單的提供 API 服務,那就省事點選擇 Ktor ,而且是 Kotlin 開發廠商開發的,有什麼問題他們可以內部溝通溝通,應該不會有大坑。

總之先裝 Ktor Plugin 。

https://ithelp.ithome.com.tw/upload/images/20200911/20129197kmiski1X4w.png

https://ithelp.ithome.com.tw/upload/images/20200911/20129197Rm6bFM9S9I.png

粗略掃過官網的 quickstart 教學 https://ktor.io/quickstart/ ,我先把 JDK 換成昨天下載的版本, DSL 模板一個也沒勾,反正如果需要的話,後面補上也行。

https://ithelp.ithome.com.tw/upload/images/20200911/201291974BSpGrQu3R.png

名字取個和老姐專案對應的湯碗,版本號等後面穩定了再改。

https://ithelp.ithome.com.tw/upload/images/20200911/20129197cIchlKeLri.png

https://ithelp.ithome.com.tw/upload/images/20200911/20129197iI9Yw6srGd.png

因為是第一個專案,要等一大堆東西下載完,程式碼才能出現正常的語法提示顏色。

https://ithelp.ithome.com.tw/upload/images/20200911/20129197onT8GpLA0i.png

https://ithelp.ithome.com.tw/upload/images/20200911/20129197PuSoY9CwCb.png

為了輕便的理由選擇輸出 Json 格式,目標:

{"message", "HELLO WORLD!"}

為此在 build.gradle 檔案的 dependencies 區域加上好用的 Json Library gson

implementation "io.ktor:ktor-gson:$ktor_version"

修改 Application.kt 裡的函式 Application.module ,啊,有 IDE 真好,有自動 import 功能。

https://ithelp.ithome.com.tw/upload/images/20200911/20129197iQI4Un6wEY.png

⋯⋯好危險,剛剛一瞬間失去了意識,我打起精神重新檢查了 Application.kt 檔案:

package com.katelee

import io.ktor.application.*
import io.ktor.features.ContentNegotiation
import io.ktor.gson.gson
import io.ktor.response.*
import io.ktor.routing.get
import io.ktor.routing.routing

fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)

@Suppress("unused") // Referenced in application.conf
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
    install(ContentNegotiation) {
        gson {
        }
    }
    routing {
        get("/") {
            call.respond(mapOf("message" to "HELLO WORLD!"))
        }
    }
}

執行看看。

https://ithelp.ithome.com.tw/upload/images/20200911/20129197NtBLcwdwvy.png
https://ithelp.ithome.com.tw/upload/images/20200911/201291970PvWDhnJjP.png

照下面視窗點進去 http://0.0.0.0:8080 ,一切完美,不愧是我。

https://ithelp.ithome.com.tw/upload/images/20200911/20129197Gc5jNSfF1E.png

好了,未免明天電腦發熱,先中止程式執行。喪屍二號前來報到!呼嚕呼嚕呼嚕⋯⋯

https://ithelp.ithome.com.tw/upload/images/20200911/20129197UMBySEIaFM.png


上一篇
熊熊燃燒的第一天:開發前的準備
下一篇
太多選擇的第三天:先放 TODO
系列文
老姐好像要用 Kotlin 寫專案,能撐30天嗎?30

尚未有邦友留言

立即登入留言