Ich versuche eine Direktive zu schreiben, die Nicht-Ajax-Anfragen ablehnt. Der folgende Code funktioniert nicht offensichtlich:akka-http: Wie kann ich einen extrahierten Wert konsumieren/verbergen?
import akka.http.scaladsl.model.HttpHeader
import akka.http.scaladsl.server.Directive0
import akka.http.scaladsl.server.directives.BasicDirectives
import akka.http.scaladsl.server.directives.HeaderDirectives
import akka.http.scaladsl.server.directives.RouteDirectives
trait AjaxDirectives extends BasicDirectives with HeaderDirectives with RouteDirectives {
private val valid = "XMLHttpRequest"
def ajax(): Directive0 = {
headerValueByName("X-Requested-With") { header ⇒
if (header == valid) {
pass
} else {
reject
}
}
}
}
(2 Probleme hier: pass
ist Directive0
& headerValueByName
ist Directive1
und headerValueByName
ist Directive1
& ajax
Directive0
ist also es nicht kompiliert.)
Meine Frage ist: kann ich irgendwie einen lokal begrenzten Extrakt haben? Wie in header
nicht entkommen ajax
.
Ich weiß, dass ich den Antrag zugreifen kann den Header herausziehen, ohne headerValue*
zu verwenden, so wenden Sie sich bitte mit, dass nicht beantworten.