今天是最後一天了,我們來看看這幾天以來,我們都學會了什麼。
首先,在 Day 02 時,我們看過了怎麼開啟一個 embeddedServer
服務,並且看到了使用工廠模式的 NettyApplicationEngine
。
Day 03 時,我們看到了路由的設置,並且接觸了我們的第一個 Ktor 套件,BaseRouteScopedPlugin
。
Day 04 和 Day 5 時,我們看到了路由套件是怎麼設置 HTTP 路徑的,並且看到了 Ktor 使用 data class
和 enum class
來定義路由的方式,以及如何解析輸入的路徑。
Day 06 和 Day 07 我們看到了回傳內容的處理,雖然邏輯相對複雜,但是透過註解的協助,我們還是釐清了 call.respondText()
的邏輯,並且稍微窺見了一點點 Ktor 利用協程提高系統效率的部分。
Day 08 我們看到了靜態檔案處理的部分,Day 09、 Day 10 Day 11則是看到了 HTML DSL 的定義方式。這邊我們學到了 Ktor 如何利用 HTMLTag
物件來生成 HTML 內容。這邊使用了很多的 Kotlin 小技巧,像是 inline
和 crossinline
語法,還有 unaryPlus
這個 operator fun
。
Day 12 和 Day 13我們看了 ContentNegotiation
這個處理輸出內容的套件,以及他怎麼建立 JsonBuilder
來生成 json 格式的輸出。
Day 14 和 Day 15 我們看到了怎麼用類似的邏輯,將收到的請求和回傳轉換成開發者自定義的類別。
Day 16 開始,我們進入到了 Ktor 存取第三方 API 的功能。裡面我們看到了 CIOEngine
和 HttpClient
等類別,並在 Day 17 Day 18 這幾天仔細的看過了傳送第三方資料的邏輯。
Day 19 和 Day 20 我們看到了使用 Form data 傳輸資料的方式,這也讓我們學到如何傳輸檔案類型的內容,到第三方 API 內。這邊我們也看到了 Ktor 善用了 Kotlin 語法內的 List
類別,將檔案切成 List<PartData>
來進行傳輸。
Day 21 開始,我們就進入到了 webSocket 的內容,Day 22 Day 23 我們看到了 Ktor 如何建立一個 webSocket 的路徑,也簡單的帶到了 RFC 6455 這份定義 webSocket 實作的文件。Day 24 我們更進一步的看了 Ktor 內 Frame
的實作。
前面這幾天的經驗,讓我們可以更好的在 Day 25 讓 webSocket 之間互動,以及在 Day 26 撰寫存取第三方的 client.webSocket
。
最後在 Day 27、Day 28 和 Day 29,我們進入到了一個 Ktor v2.2.0 才開始提供的內容。我們利用 createApplicationPlugin
建立了自己的 Ktor 套件,並且試著定義了 onCall
onCallReceive
等事件,存取了 Ktor 所拿到的 call.request
和 call.response
等物件。
希望這近一個月以來,可以讓各位讀者對 Ktor 的實作更加熟悉,也同時對一個框架該提供怎樣的功能有更高的掌握。
今年的鐵人賽就到這邊了!大家明年見!