Scala - Finatra - 从标题中读取ip地址

时间:2016-09-20 21:51:20

标签: scala finagle finatra

我是Finatra和scala的新手。我需要在post请求中将ip地址与另一个数据一起存储。我使用自定义案例类: case class MyRequest(name : String, email: String) 如何在此请求中获取remoteAddress? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

我只是在document中找到它,你可以实现你的案例类:

case class MyRequest (
  request: Request,
  name : String,
  email: String
)

并且requestcom.twitter.finagle.http.Request的类型,因此您可以通过以下方式访问remoteAddress:

post("/[your-api]") { r: MyRequest
  val ip = r.request.remoteAddress
}

答案 1 :(得分:0)

看来你不能。如果您的请求类型是自定义案例类。可能你可以做类似下面的事情,并使用jackson反序列化你自己的案例类的请求:

  post("/{your-api-path}/") {
    r: Request =>

      val remoteIP = r.remoteHost
      val myRequest = objectMapper.readValue(r.contentString, classOf[MyRequest])
      ...
  }