3、Ktor學習-ApplicationCall簡介;

Melrose發表於2019-03-04

  處理路由時,將獲得ApplicationCall的上下文。

  ApplicationCall提供對兩個主要屬性ApplicationRequest和ApplicationResponse的訪問。 如其名稱所示,它們對應於傳入請求和傳出響應。 除此之外,它還提供了一個ApplicationEnvironment,以及一些有用的函式來幫助響應客戶端請求。 鑑於管道可以非同步執行,ApplicationCall還表示具有Attributes的邏輯執行上下文,以在管道的各個部分之間傳遞資料。

  將攔截器安裝到管道中是改變ApplicationCall處理的主要方法。 幾乎所有Ktor功能都是攔截器,它們在應用程式呼叫處理的不同階段執行各種操作。

 intercept(ApplicationCallPipeline.Call) { 
        if (call.request.uri == "/")
            call.respondText("Test String")
    }
複製程式碼

  上面的程式碼將攔截器安裝到ApplicationCall處理的Call階段,並在請求請求根頁面時以純文字響應。

  這只是一個示例,通常,頁面請求不會以這種方式處理,因為有一個路由工具可以執行此操作以及更多。 此外,如前所述,定義攔截器通常使用具有安裝功能的功能來完成。

  ApplicationCall上可用的大多數函式(例如上面的respondText)都是掛起函式,表明它們可能非同步執行。

相關文章