web-dev-qa-db-ja.com

akka-httpでクエリパラメータを読み取る方法

リクエストの処理中にakka-httpライブラリがクラスタイプにマーシャリングおよびアンマーシャリングすることを知っていますが、今はGETリクエストのリクエストパラメータを読み取る必要があります。 parameter()メソッドを試してみたところ、ParamDefAuxタイプが返されましたが、これらの値は文字列タイプとして必要です

以下の質問で答えを確認します。

  1. スプレールーティングでgetリクエストパラメータを解析するにはどうすればよいですか?

  2. Akka HTTP(旧称Spray)を使用したGETリクエストのクエリパラメータ

しかし、私が必要とすることはできません。

リクエストからクエリパラメータを抽出する方法を教えてください。 OR ParamDefAuxから必要な値を抽出するにはどうすればよいですか?

リクエストURL

http://Host:port/path?key=authType&value=Basic345

メソッド定義を取得する

 val  propName = parameter("key")
 val  propValue = parameter("value")
 complete(persistanceMgr.deleteSetting(propName,propValue))

私のメソッド宣言

def deleteSetting(name:String,value:String): Future[String] = Future{
 code...
}
10
Siva Kumar

http://Host:port/path?key=authType&value=Basic345などのリクエストの場合

path("path") {
  get {
    parameters('key.as[String], 'value.as[String]) { (key, value) =>
      complete {
        someFunction(key,value)
      }
    }
  }
}
23
Selvaram G

コードではそれほど明示的ではありませんが、コンテキストからすべてのクエリパラメータを一度に抽出することもできます。次のように使用できます。

// Previous part of the Akka HTTP routes ...
extract(_.request.uri.query()) { params  =>
  complete {
    someFunction(key,value)
  }
}
1
Didac Montero

抽出したい場合はquery parametersワンピースとして

extract(ctx => ctx.request.uri.queryString(charset = Charset.defaultCharset)) { queryParams =>
   //useyourMethod()
}
0
Puneeth Reddy V