【问题标题】:Scala - Finatra - Reading ip address from headerScala - Finatra - 从标头中读取 IP 地址
【发布时间】:2016-12-02 15:03:42
【问题描述】:

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

【问题讨论】:

    标签: scala finagle finatra


    【解决方案1】:

    我只是在document找到的,你可以实现你的case类如下:

    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
    }
    

    【讨论】:

      【解决方案2】:

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

        post("/{your-api-path}/") {
          r: Request =>
      
            val remoteIP = r.remoteHost
            val myRequest = objectMapper.readValue(r.contentString, classOf[MyRequest])
            ...
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-30
        • 1970-01-01
        • 1970-01-01
        • 2014-06-06
        • 1970-01-01
        • 2022-01-24
        • 2014-10-06
        相关资源
        最近更新 更多