En juego 1.x que tenían el parámetro http.path la que le permitió establecer una URL para añadir a cada ruta¿Cómo agregar un prefijo a todas mis rutas en Play Framework 2?
¿Cómo puedo lograr calle detrás similar a jugar 2.0?
En juego 1.x que tenían el parámetro http.path la que le permitió establecer una URL para añadir a cada ruta¿Cómo agregar un prefijo a todas mis rutas en Play Framework 2?
¿Cómo puedo lograr calle detrás similar a jugar 2.0?
pregunté en play's discussion group y ellos me ayudaron a lograr esta versión inicial
creo un PrefixedRequest como esto
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)
}
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))
}
}
añade Conviene por último garantizar
Entonces utilicé en Global.scala esto a application.conf
http.path=/prefix/
Parece que funciona, pero no puedo encontrar cómo agregar ese prefijo a las rutas invertidas ... ¿Alguien puede echarle una mano en esa parte?
-
Algunos enlaces útiles
En juego 2.1 se puede hacer eso con la siguiente opción en conf/application.conf
:
application.context="/your/prefix"
De Juego 2.4 esta propiedad se llama play.http.context
(tomada del comentario de Gman).
Esto es mucho más fácil que la respuesta aceptada (que puede no haber funcionado) en juego 2.0) – Nathan
Esta es la respuesta correcta –
Para que otras personas provenientes de Google sepan, en el juego 2.4 se cambió a 'play.http.context' (ver https://www.playframework.com/documentation/2.4. x/Migration24) – Gman
aparentemente, estas características no se incluirán antes de la versión 2.1 - https://github.com/playframework/Play20/commit/da6bbc4 – opensas
Podría ser genial para i18n (/ fr,/es ...) – iwalktheline
I cree que sería mejor extender http://www.playframework.org/documentation/api/2.0/scala/play/api/mvc/WrappedRequest.html – Drew