1. ホーム
  2. scala

Playフレームワークでオプションのクエリパラメータを処理する方法

2023-09-25 12:52:38

質問

Scalaですでに機能しているPlay 2.0フレームワークベースのアプリケーションがあり、次のようなURLを提供しているとします。

http://localhost:9000/birthdays

というメッセージが表示され、既知のすべての誕生日のリストが返されます。

私は今、次のようなオプションの "from" (date) と "to" リクエストパラメータで結果を制限する機能を追加することによって、これを強化したいと思います。

http://localhost:9000/birthdays?from=20120131&to=20120229

(ここでは日付はyyyyMMddとして解釈されます)

私の質問は、Play 2.0のScalaでリクエストパラメータのバインディングと解釈をどのように扱うか、特にこれらのパラメータが両方ともオプションであるべきであることを考慮したものです。

これらのパラメータは、何らかの形で "routes" 仕様で表現されるべきでしょうか?あるいは、応答するコントローラーのメソッドは、何らかの方法でリクエストオブジェクトからパラメータを分離すべきでしょうか?これを行うための別の方法はありますか?

どのように解決するのですか?

オプションのパラメータを Option[String] (または Option[java.util.Date] を実装する必要があります。 QueryStringBindable[Date] ):

def birthdays(from: Option[String], to: Option[String]) = Action {
  // …
}

そして、以下のようなルートを宣言します。

GET   /birthday       controllers.Application.birthday(from: Option[String], to: Option[String])