7

Play 1.x では、すべてのルートに追加する URL を設定できる http.path パラメータがありました。

http.param

どうすれば play 2.0 で同様のことを達成できますか?

4

2 に答える 2

6

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/

うまくいくようですが、そのプレフィックスを逆のルートに追加する方法がわかりません...誰もその部分に手を差し伸べることができますか?

--

いくつかの便利なリンク

このスレッドドキュメントを確認してください

于 2012-08-12T20:07:56.707 に答える