2016-09-20 2 views
0

Je suis nouveau à Finatra et scala. J'ai besoin de stocker l'adresse IP avec une autre donnée dans une demande de publication. J'utilise une classe de cas personnalisée: case class MyRequest(name : String, email: String) Comment puis-je également obtenir remoteAddress dans cette demande? Merci d'avance.Scala - Finatra - Lecture de l'adresse IP de l'en-tête

Répondre

0

Il semble que vous ne pouvez pas. Si votre type de requête est une classe de cas personnalisée. Probablement que vous pouvez faire quelque chose comme ce qui suit, et utiliser jackson pour désérialisation la demande à votre propre classe de cas:

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

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

Je trouve dans le document, vous pouvez mettre en œuvre votre classe de cas ressemble à ceci:

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

et le request est le type de com.twitter.finagle.http.Request, afin que vous puissiez accéder à remoteAddress ainsi:

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