iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0

今天是最後一天了,我們來看看這幾天以來,我們都學會了什麼。

首先,在 Day 02 時,我們看過了怎麼開啟一個 embeddedServer 服務,並且看到了使用工廠模式的 NettyApplicationEngine

Day 03 時,我們看到了路由的設置,並且接觸了我們的第一個 Ktor 套件,BaseRouteScopedPlugin

Day 04Day 5 時,我們看到了路由套件是怎麼設置 HTTP 路徑的,並且看到了 Ktor 使用 data classenum class 來定義路由的方式,以及如何解析輸入的路徑。

Day 06Day 07 我們看到了回傳內容的處理,雖然邏輯相對複雜,但是透過註解的協助,我們還是釐清了 call.respondText() 的邏輯,並且稍微窺見了一點點 Ktor 利用協程提高系統效率的部分。

Day 08 我們看到了靜態檔案處理的部分,Day 09Day 10 Day 11則是看到了 HTML DSL 的定義方式。這邊我們學到了 Ktor 如何利用 HTMLTag 物件來生成 HTML 內容。這邊使用了很多的 Kotlin 小技巧,像是 inlinecrossinline 語法,還有 unaryPlus 這個 operator fun

Day 12Day 13我們看了 ContentNegotiation 這個處理輸出內容的套件,以及他怎麼建立 JsonBuilder 來生成 json 格式的輸出。

Day 14Day 15 我們看到了怎麼用類似的邏輯,將收到的請求和回傳轉換成開發者自定義的類別。

Day 16 開始,我們進入到了 Ktor 存取第三方 API 的功能。裡面我們看到了 CIOEngineHttpClient 等類別,並在 Day 17 Day 18 這幾天仔細的看過了傳送第三方資料的邏輯。

Day 19Day 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 27Day 28Day 29,我們進入到了一個 Ktor v2.2.0 才開始提供的內容。我們利用 createApplicationPlugin 建立了自己的 Ktor 套件,並且試著定義了 onCall onCallReceive 等事件,存取了 Ktor 所拿到的 call.requestcall.response 等物件。

希望這近一個月以來,可以讓各位讀者對 Ktor 的實作更加熟悉,也同時對一個框架該提供怎樣的功能有更高的掌握。

今年的鐵人賽就到這邊了!大家明年見!


上一篇
Day 29:利用 createConfiguration 設置自定義套件參數
系列文
深入解析 Kotlin 專案 Ktor 的程式碼,探索 Ktor 的強大功能30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Brandy
iT邦新手 3 級 ‧ 2023-10-14 12:16:19

恭喜完賽!

我要留言

立即登入留言