Scala - Finatra - 从 header 读取 ip 地址
Scala - Finatra - Reading ip address from header
我是 Finatra 和 scala 的新手。我需要在 post 请求中将 ip 地址与其他数据一起存储。我正在使用自定义案例 class:
case class MyRequest(name : String, email: String)
我怎样才能在此请求中获得 remoteAddress ?
提前致谢。
看来你不能。如果您的请求类型是自定义案例 class。也许你可以做类似下面的事情,并使用 jackson 将请求反序列化到你自己的案例 class:
post("/{your-api-path}/") {
r: Request =>
val remoteIP = r.remoteHost
val myRequest = objectMapper.readValue(r.contentString, classOf[MyRequest])
...
}
我刚刚在 document 中找到它,你可以实现你的案例 class 看起来像这样:
case class MyRequest (
request: Request,
name : String,
email: String
)
而request
是com.twitter.finagle.http.Request
的类型,所以可以这样访问remoteAddress:
post("/[your-api]") { r: MyRequest
val ip = r.request.remoteAddress
}
我是 Finatra 和 scala 的新手。我需要在 post 请求中将 ip 地址与其他数据一起存储。我正在使用自定义案例 class:
case class MyRequest(name : String, email: String)
我怎样才能在此请求中获得 remoteAddress ?
提前致谢。
看来你不能。如果您的请求类型是自定义案例 class。也许你可以做类似下面的事情,并使用 jackson 将请求反序列化到你自己的案例 class:
post("/{your-api-path}/") {
r: Request =>
val remoteIP = r.remoteHost
val myRequest = objectMapper.readValue(r.contentString, classOf[MyRequest])
...
}
我刚刚在 document 中找到它,你可以实现你的案例 class 看起来像这样:
case class MyRequest (
request: Request,
name : String,
email: String
)
而request
是com.twitter.finagle.http.Request
的类型,所以可以这样访问remoteAddress:
post("/[your-api]") { r: MyRequest
val ip = r.request.remoteAddress
}