處理路由時,將獲得ApplicationCall的上下文。
ApplicationCall提供對兩個主要屬性ApplicationRequest和ApplicationResponse的訪問。 如其名稱所示,它們對應於傳入請求和傳出響應。 除此之外,它還提供了一個ApplicationEnvironment,以及一些有用的函式來幫助響應客戶端請求。 鑑於管道可以非同步執行,ApplicationCall還表示具有Attributes的邏輯執行上下文,以在管道的各個部分之間傳遞資料。
將攔截器安裝到管道中是改變ApplicationCall處理的主要方法。 幾乎所有Ktor功能都是攔截器,它們在應用程式呼叫處理的不同階段執行各種操作。
intercept(ApplicationCallPipeline.Call) {
if (call.request.uri == "/")
call.respondText("Test String")
}
複製程式碼
上面的程式碼將攔截器安裝到ApplicationCall處理的Call階段,並在請求請求根頁面時以純文字響應。
這只是一個示例,通常,頁面請求不會以這種方式處理,因為有一個路由工具可以執行此操作以及更多。 此外,如前所述,定義攔截器通常使用具有安裝功能的功能來完成。
ApplicationCall上可用的大多數函式(例如上面的respondText)都是掛起函式,表明它們可能非同步執行。