Rutas en Play2: Cómo combinar una parte de la URL
-
26-10-2019 - |
Pregunta
Hay algunas URL como:
http://localhost:9000/images/111111.jpg
http://localhost:9000/images/222222.png
http://localhost:9000/images/333333.gif
Se asignarán a un método:
def showImage(id: String) = Action {
val image = Image.findById(id).get
Ok.sendFile(new File(image.path)
}
Tenga en cuenta que el id
es la única parte del nombre de archivo que se muestra en URL: 111111
, 222222
, 333333
Así que escribo un mapeo en rutas:
GET /images/$id<\w+>.* controllers.Images.showImage(id)
En la parte $id<\w+>.*
, id
está coincidiendo con la identificación y .*
coincide con el sufijo que será ignorado.
Pero la sintaxis es incorrecta, el mensaje de error es:
Identifier expected
¿Como arreglarlo?
Solución
Actualmente no es posible hacerlo con Play 2. Como solución puede procesar su argumento en la acción del controlador:
GET /images/:id controllers.Images.showImage(id)
def showImage(idWithExt: String) = Action { val id = idWithExt.takeWhile(_ != '.') ... }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow