Ich bin auf der Suche nach einer Möglichkeit, eine Funktion zu konvertieren, die grundlegende Parametertypen verwendet und sie zur Verarbeitung eines akka HttpRequest
verwendet. Ich möchte die Path
automatisch verarbeitet und an die Funktion übergeben."Lifting" Eine Scala-Funktion in einen HttpRequest-Prozessor
Als Beispiel gegeben einig Funktion
def foobar(str : String, i : Int, l : Long) : String = ???
es nützlich wäre, die Funktion, eine Art von „Heben“, um ein Path
zu verarbeiten. Ein Beispiel-URL-Pfad könnte
/foobar/einstein/42/2016
Die Hebefunktion etwas aussehen würde:
import akka.http.scaladsl.model.Uri.Path
import akka.http.scaladsl.server.Directive
type SomeFunctionType = ???
def lifter(function : SomeFunctionType, path : Path) : Directive = {
val funcResult = ??? //somehow call function on the Path elements
complete(funcResult)
}
, die dann in der folgenden Art und Weise verwendet werden könnten, :
Diese Hubfunktion müsste durch th durchlaufen e Funktionsparametertypen und wandeln den entsprechenden Pfadabschnitt in den passenden Typ um, bevor die Werte an die Funktion übergeben werden. Die Beispiel-URL würde mit dem Ergebnis des Aufrufs foobar("enstein", 42, 2016)
vervollständigt werden.
Gibt es trotzdem in den Bibliotheken dies zu tun? Wenn nicht, gibt es eine Möglichkeit, Lifter zu definieren?
Vielen Dank im Voraus für Ihre Berücksichtigung und Antwort.
Ich denke, die idiomatische Art, es zu tun, würde die 3 verschiedenen Pfad-Anweisungen hinzufügen, um mit einem String, Int und Long übereinstimmen und rufen Sie dann die Funktion mit ihm. Sie können immer eine benutzerdefinierte Direktive erstellen, die diese 3 Typen extrahiert und dann eine Funktion mit diesen Werten aufruft –