我的服务器建立在Akka HTTP之上。如果我不设置 Server
标头,Akka 将自动添加外部可配置的默认值 akka-http/10.1.8
。我知道如何通过在整个路由树周围添加 respondWithHeaders
指令来用我自己的服务器覆盖它:
respondWithHeaders(Server(myProductVersion)) {
// my routs here
}
这按预期工作;服务器响应标头现在读取我的产品。我想要的是包括 akka 的标头,因为我喜欢它并且不介意告诉全世界我的服务器堆栈。给定Server.apply
方法的签名,我应该能够像这样做:
respondWithHeaders(Server(myProductVersion, akkaProductVersion)) {
// my routs here
}
。我的问题是我不知道如何获得那个akkaProductVersion
对象!
尝试像这样读取akka.http.version
配置属性
system.settings.config.getString("akka.http.version")
所以你可以试试
Server(
myProductVersion,
system.settings.config.getString("akka.http.version")
)
根据默认配置
# The default value of the `Server` header to produce if no
# explicit `Server`-header was included in a response.
# If this value is the empty string and no header was included in
# the request, no `Server` header will be rendered at all.
server-header = akka-http/${akka.http.version}
我们可以看到 akka-http 在构造ServerSettings
时如何读取server-header
:
c.getString("server-header").toOption.map(Server(_)),