在 运行 时间获取 Akka HTTP 版本
Obtain version of Akka HTTP at run time
我的服务器建立在 Akka HTTP 之上。如果我不设置 Server
header,外部可配置的默认值 akka-http/10.1.8
将由 Akka 自动添加。我知道如何通过在我的整个路由树周围添加 respondWithHeaders
指令来用我自己的服务器覆盖它:
respondWithHeaders(Server(myProductVersion)) {
// my routs here
}
这按预期工作;服务器响应 header 现在读取我的产品。不过,我想要的是也包括 akka 的 header,因为我喜欢它并且不介意向全世界介绍我的服务器堆栈。鉴于 Server.apply
方法的签名,我应该能够这样做:
respondWithHeaders(Server(myProductVersion, akkaProductVersion)) {
// my routs here
}
...我的问题是我不知道如何做到这一点 akkaProductVersion
object!
尝试像这样阅读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
here:
c.getString("server-header").toOption.map(Server(_)),
我的服务器建立在 Akka HTTP 之上。如果我不设置 Server
header,外部可配置的默认值 akka-http/10.1.8
将由 Akka 自动添加。我知道如何通过在我的整个路由树周围添加 respondWithHeaders
指令来用我自己的服务器覆盖它:
respondWithHeaders(Server(myProductVersion)) {
// my routs here
}
这按预期工作;服务器响应 header 现在读取我的产品。不过,我想要的是也包括 akka 的 header,因为我喜欢它并且不介意向全世界介绍我的服务器堆栈。鉴于 Server.apply
方法的签名,我应该能够这样做:
respondWithHeaders(Server(myProductVersion, akkaProductVersion)) {
// my routs here
}
...我的问题是我不知道如何做到这一点 akkaProductVersion
object!
尝试像这样阅读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
here:
c.getString("server-header").toOption.map(Server(_)),