Itinerari play2: come abbinare una parte dell'URL
-
26-10-2019 - |
Domanda
Ci sono alcuni URL come:
http://localhost:9000/images/111111.jpg
http://localhost:9000/images/222222.png
http://localhost:9000/images/333333.gif
Si verrà mappato a un metodo:
def showImage(id: String) = Action {
val image = Image.findById(id).get
Ok.sendFile(new File(image.path)
}
Si noti che il id
è l'unica parte del nome del file mostrato in url: 111111
, 222222
, 333333
Così scrivo una mappatura in percorsi:
GET /images/$id<\w+>.* controllers.Images.showImage(id)
Nella parte $id<\w+>.*
, id
sta abbinando l'id, e .*
abbinare il suffisso che verrà ignorato.
Ma la sintassi non è corretta, il messaggio di errore è:
Identifier expected
Come risolvere il problema?
Soluzione
Al momento non è possibile farlo con Play 2. Come soluzione alternativa è possibile elaborare il tuo argomento nella azione di controllo:
GET /images/:id controllers.Images.showImage(id)
def showImage(idWithExt: String) = Action { val id = idWithExt.takeWhile(_ != '.') ... }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow