2017-01-05 6 views
1

über Routen Header ich einen Header in meiner akka-http Routen erfordern möchten und könnenErfordern ohne Aufgeben 404

val route = headerValueByName("foo") { foo => 
    pathPrefix("path") { 
    get { 
     ... 
    } ~ ... 
    } 
} 

jedoch jetzt alle Anfragen so über tun, das wird keinen Pfad übereinstimmen mit 400 (fehlende Kopfzeile) und nicht 404 abgelehnt werden. Gibt es eine nette Methode, um dies zu umgehen, ohne headerValueByName nach den Pfadmatchern wiederholt zu verschieben?

Das heißt, gibt es eine Möglichkeit, nur eine äußere Direktive (headerValueByName) und seine Ablehnungen anzuwenden, wenn die inneren Pfad- und Methodenkompilierungen erfolgreich sind?

Antwort

0

Sie geben nicht an, was Sie tun möchten, falls die Kopfzeile nicht angegeben ist, also nehme ich an, dass Sie 400 zurückgeben möchten (ungültige Anforderung).

Eine mögliche Lösung ist die optionalHeaderValueByName Richtlinie zu verwenden und dann die Anforderung mit dem angegebenen Fehler abzuschließen, zum Beispiel:

val route = optionalHeaderValueByName("foo") { optionalHeader => 
    optionalHeader map { header => 
    // rest of your routes 
    } getOrElse complete(StatusCodes.BadRequest) 
} 
Verwandte Themen