scala 2.0.2 play フレームワークを使用して Web API を実装しています。いくつかの get パラメータを抽出して検証したいと思います。このために、オプションのフィールドを定義できるプレイ「フォーム」を使用しています。
問題: これらのオプションのフィールドについて、パラメーターが渡されない場合、デフォルト値を定義する必要があります。このコードは、次の 3 つのユース ケースを正しく解析することを目的としています。
- /test?top=abc (エラー、abc は整数ではありません)
- /test?top=123 (有効、top は 123)
- /test (有効、top は 42 (デフォルト値))
私は次のコードを思いつきました:
def test = Action {
implicit request =>
case class CData(top:Int)
val p = Form(
mapping(
"top" -> optional(number)
)((top) => CData($top.getOrElse(42))) ((cdata:CData) => Some(Some(cdata.top)))
).bindFromRequest()
Ok("all done.")
}
コードは機能しますが、エレガントではありません。欠落しているリクエスト パラメータのデフォルト値を設定するためだけに、多くのボイラー プレートが実行されています。
よりクリーンでより正確なソリューションを提案できる人はいますか?