2016-07-26 2 views
0

Nach PATHEND Richtlinie der Dokumentation:akka-http PATHEND Richtlinie fängt Query-String

lehnt die Anfrage, ob die unmatchedPath des [[Request]] nicht leer ist, oder anders gesagt: nur auf den Pässen Anfrage an die interne Route , wenn der Anfragepfad vollständig abgeglichen wurde.

Aber:

val route = pathPrefix("prefix") { 
     get { 
     pathEnd { 
      complete(HttpEntity("test\n")) 
     } 
     } 
    } 

Fänge GET-Anfragen auf dem Pfad "/ Präfix etwas?" Oder "/ Präfix etwas = z?", Etc ...

das ein normales Verhalten? Wie kann ich die obigen Beispielpfade zurückweisen?

Dank

Ich bin mit Akka 2.4.4

Antwort

2

Dieses normales Verhalten ist. Die Abfragezeichenfolge ist nicht Teil des Anforderungspfads und daher nicht übereinstimmend. Um diese Anforderungen abzulehnen, können Sie explizit prüfen, ob der Parametersatz leer ist:

val route = 
    pathPrefix("prefix") { 
    get { 
     pathEnd { 
     parameterSeq { params => 
      validate(params.isEmpty, "Parameters must be empty") { 
      complete(HttpEntity("test\n")) 
      } 
     } 
     } 
    } 
    } 

Get("/prefix") ~> route ~> check { 
    responseAs[String] shouldEqual "test\n" 
} 

Get("/prefix?something") ~> route ~> check { 
    rejection shouldEqual ValidationRejection("Parameters must be empty") 
}