基本パラメータ型を取り、akka HttpRequest
を処理する関数を変換する方法を探しています。 Path
が自動的に処理されて関数に渡されるようにします。例としてスカラ関数をHttpRequestプロセッサに持ち上げる
、Path
を処理する機能を「持ち上げる」の方法を有することが有用であろういくつかの機能
def foobar(str : String, i : Int, l : Long) : String = ???
を与え。
次のように使用することができ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)
}
:たとえばURLパスできたこと
/foobarに/アインシュタイン/ 2016分の42
昇降機能は、次のようになります:
val route =
get {
pathPrefix("foobar") {
extractUnmatchedPath { remainingPath =>
lifter(foobar, remainingPath)
}
}
}
このリフティング機能は、関数に渡す前に、対応するPathセクションを一致する型に変換します。 URL例は、foobar("enstein", 42, 2016)
という呼び出しの結果で完了します。
ライブラリでこれを行うにはどうしますか?そうでない場合、リフターを定義する方法はありますか?
お気軽にご相談ください。
私はそれを行う慣習的なやり方は、3つの異なるパスディレクティブを追加してString、Int、Longと照合し、その関数を呼び出していると思います。これら3つの型を抽出し、これらの値を持つ関数を呼び出すカスタムディレクティブをいつでも作成できます –