Play 1.x では、すべてのルートに追加する URL を設定できる http.path パラメータがありました。
どうすれば play 2.0 で同様のことを達成できますか?
Play 1.x では、すべてのルートに追加する URL を設定できる http.path パラメータがありました。
どうすれば play 2.0 で同様のことを達成できますか?
play のディスカッション グループで質問したところ、この初期バージョンの作成に協力してくれました
このような PrefixedRequest を作成します
import play.api.mvc.RequestHeader
import play.api.Play.configuration
import play.api.Play.current
class PrefixedRequest(request: RequestHeader) extends RequestHeader {
def headers = request.headers
def queryString = request.queryString
// strip first part of path and uri if it matches http.path config
def path = ("^" + prefix).r.replaceFirstIn(request.path, "/")
def uri = ("^" + prefix).r.replaceFirstIn(request.uri, "/")
def method = request.method
def remoteAddress = request.remoteAddress
lazy val prefix = {
val config = configuration.getString("http.path").getOrElse("")
if (config.endsWith("/")) config else config + "/"
}
}
object PrefixedRequest {
def apply(request: RequestHeader) = new PrefixedRequest(request)
}
次に、Global.scalaで使用しました
import play.api.GlobalSettings
import play.api.mvc.RequestHeader
import play.api.mvc.Handler
object Global extends GlobalSettings {
override def onRouteRequest(request: RequestHeader): Option[Handler] = {
super.onRouteRequest(PrefixedRequest(request))
}
}
最後にこれをapplication.confに追加しました
http.path=/prefix/
うまくいくようですが、そのプレフィックスを逆のルートに追加する方法がわかりません...誰もその部分に手を差し伸べることができますか?
--
いくつかの便利なリンク