リクエストのルーティングを行うパターンマッチでParamsという抽出子を使用することでリクエストパラメータをMap[String, Seq[String] ]で取得することができます。
// POSTメソッドによる/resultに対するリクエスト case POST(Path("/result") & Params(params)) => Ok ~> { // nameという名前のパラメータを取得 val name = params.get("name").head Html(<p>Hello {name}!</p>) }
また、リクエストパラメータを抽出するための抽出子を作成することでパラメータの有無などによってマッピングを行うこともできます。抽出子はParams.Extractを継承して作成します。
// nameは必須のパラメータ object Name extends Params.Extract( "name", Params.first ~> Params.nonempty) // ageはInt型のパラメータ object Age extends Params.Extract( "age", Params.first ~> Params.int)
これらの抽出子は以下のようにしてリクエストのルーティングに使用することができます。パスやメソッドが一致していても、リクエストパラメータが不正な場合はこのパターンへのルーティングは行われません。なので入力チェックの代わりに使用することもできます。
// nameとageが正しい値の場合のみ有効なマッピング case POST(Path("/result") & Params(Name(name) & Age(age))) => Ok ~> Html(<p>{name} is {age} years old.</p>)