向 Ktor 中的路由添加拦截器不起作用
Adding interceptor to routes in Ktor not working
我有一个 Route
,对于每个 ApplicationCall
,我想在响应中添加一个 header。
例如
routes {
route("/cdn-cached") {
intercept(ApplicationCallPipeline.Features){
call.response.header(HttpHeaders.CacheControl, ...)
}
get(...) {...}
post(...) {...}
route(...) {...}
}
}
这是一个过于简单的设置示例,但我期望的是,每次我在 /cdn-cached
路由下调用端点时,它都会附加 header。我确定我搞砸了什么,但我不知道是什么。
我需要什么来修复此代码?
注意:我有一个框架可以做很多动态的事情,到目前为止它可以做我想做的一切,现在我偶然发现了这个。我之所以这样说,是因为在每个人 ApplicationCall
中添加 header 并不是一个好的选择,例如 get、post 和路由。我可以这样做,但如果我可以像我在示例中描述的那样来做,我宁愿不这样做。
你可以拦截ApplicationCallPipeline.Call
阶段来影响当前路由及其子路由:
route("/cdn-cached") {
intercept(ApplicationCallPipeline.Call) {
call.response.header("custom", "123")
}
// ...
}
我有一个 Route
,对于每个 ApplicationCall
,我想在响应中添加一个 header。
例如
routes {
route("/cdn-cached") {
intercept(ApplicationCallPipeline.Features){
call.response.header(HttpHeaders.CacheControl, ...)
}
get(...) {...}
post(...) {...}
route(...) {...}
}
}
这是一个过于简单的设置示例,但我期望的是,每次我在 /cdn-cached
路由下调用端点时,它都会附加 header。我确定我搞砸了什么,但我不知道是什么。
我需要什么来修复此代码?
注意:我有一个框架可以做很多动态的事情,到目前为止它可以做我想做的一切,现在我偶然发现了这个。我之所以这样说,是因为在每个人 ApplicationCall
中添加 header 并不是一个好的选择,例如 get、post 和路由。我可以这样做,但如果我可以像我在示例中描述的那样来做,我宁愿不这样做。
你可以拦截ApplicationCallPipeline.Call
阶段来影响当前路由及其子路由:
route("/cdn-cached") {
intercept(ApplicationCallPipeline.Call) {
call.response.header("custom", "123")
}
// ...
}