ope*_*sas 7 scala routes playframework playframework-2.0
在play 1.x中你有了http.path param,它允许你设置一个url来添加到每个路由
我怎样才能在游戏2.0中实现类似的功能?
ree*_*een 28
在Play 2.1中,您可以使用以下选项执行此操作conf/application.conf:
application.context="/your/prefix"
Run Code Online (Sandbox Code Playgroud)
从Play 2.4开始,这个属性被调用play.http.context(取自Gman的评论).
我在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)
}
Run Code Online (Sandbox Code Playgroud)
然后我在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))
}
}
Run Code Online (Sandbox Code Playgroud)
最后将其添加到application.conf中
http.path=/prefix/
Run Code Online (Sandbox Code Playgroud)
它似乎工作,但我不知道如何将这个前缀添加到反向路线...任何人都可以在那一部分上手?
-
一些有用的链接
| 归档时间: |
|
| 查看次数: |
4542 次 |
| 最近记录: |