ApplicationCall

预计阅读时间:2分钟

在处理路由或直接拦截管道时,您将获得一个带有ApplicationCall的上下文.

ApplicationCall提供对两个主要属性ApplicationRequestApplicationResponse . 顾名思义,它们对应于传入请求和传出响应. 除了这些之外,它还提供了ApplicationEnvironment和一些有用的功能来帮助响应客户端请求. 假定管道可以异步执行, ApplicationCall还可以使用Attributes来表示逻辑执行上下文,以在管道的各个部分之间传递数据.

在管道中安装拦截器是更改ApplicationCall处理的主要方法. 几乎所有的Ktor 功能都是拦截器,它们在应用程序调用处理的不同阶段执行各种操作.

    intercept(ApplicationCallPipeline.Call) { 
        if (call.request.uri == "/")
            call.respondText("Test String")
    }

上面的代码将拦截器安装到ApplicationCall处理的Call阶段,并在请求请求根页面时以纯文本响应.

这只是一个示例,通常不会以这种方式处理页面请求,因为有路由工具可以执行此操作以及更多操作. 另外,如前所述,通常使用具有 install功能的功能来定义拦截器.

ApplicationCall可用的大多数函数(例如上面的respondText )都是suspend函数,表明它们可以潜在地异步执行.

有关处理ApplicationCall的机制的更多信息,请参见高级主题Pipeline .

What’s next

by  ICOPY.SITE