Routen in Play2: Wie man einen Teil der URL entspricht
-
26-10-2019 - |
Frage
Es gibt einige URLs wie:
http://localhost:9000/images/111111.jpg
http://localhost:9000/images/222222.png
http://localhost:9000/images/333333.gif
Sie werden einer Methode zugeordnet:
def showImage(id: String) = Action {
val image = Image.findById(id).get
Ok.sendFile(new File(image.path)
}
Notiere dass der id
ist der einzige Teil des Dateinamens, der in der URL gezeigt wurde: 111111
, 222222
, 333333
Also schreibe ich eine Zuordnung in Routen:
GET /images/$id<\w+>.* controllers.Images.showImage(id)
In dem Teil $id<\w+>.*
, id
entspricht der ID, und .*
Passen Sie das Suffix an, das ignoriert wird.
Die Syntax ist jedoch falsch, die Fehlermeldung lautet:
Identifier expected
Wie man es repariert?
Lösung
Es ist derzeit nicht möglich, dies mit Play 2 zu tun. Als Problemumgehung können Sie Ihr Argument in der Controller -Aktion verarbeiten:
GET /images/:id controllers.Images.showImage(id)
def showImage(idWithExt: String) = Action { val id = idWithExt.takeWhile(_ != '.') ... }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow