J'essaye d'écrire une directive qui rejette des demandes non-ajax. Le code ci-dessous ne fonctionne évidemment pas:akka-http: Comment puis-je consommer/masquer une valeur extraite?
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 problèmes ici: pass
est Directive0
& headerValueByName
est Directive1
et headerValueByName
est Directive1
& ajax
est Directive0
Il ne compile pas.)
Ma question est: puis-je avoir un extrait local? Comme dans, header
n'échappe pas ajax
.
Je sais que je peux accéder à la demande de tirer la tête hors, sans utiliser headerValue*
, alors s'il vous plaît ne pas répondre à cela.