0

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

4

2 回答 2

2

我只是在文档中找到它,您可以实现您的案例类,如下所示:

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
}
于 2016-12-02T07:03:42.180 回答
0

看来你不能。如果您的请求类型是自定义案例类。可能您可以执行以下操作,并使用 jackson 将请求反序列化到您自己的案例类:

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

      val remoteIP = r.remoteHost
      val myRequest = objectMapper.readValue(r.contentString, classOf[MyRequest])
      ...
  }
于 2016-11-04T16:36:02.033 回答