Play2のルート:URLの一部を一致させる方法
-
26-10-2019 - |
質問
次のようなURLがいくつかあります。
http://localhost:9000/images/111111.jpg
http://localhost:9000/images/222222.png
http://localhost:9000/images/333333.gif
メソッドにマッピングされます。
def showImage(id: String) = Action {
val image = Image.findById(id).get
Ok.sendFile(new File(image.path)
}
に注意してください id
urlに示されているファイル名の唯一の部分です。 111111
, 222222
, 333333
だから私はルートでマッピングを書きます:
GET /images/$id<\w+>.* controllers.Images.showImage(id)
パートで $id<\w+>.*
, id
IDと一致しています .*
無視される接尾辞を一致させます。
ただし、構文は間違っています。エラーメッセージは次のとおりです。
Identifier expected
それを修正する方法は?
解決
現在、プレイ2でそれを行うことはできません。回避策として、コントローラーアクションで引数を処理できます。
GET /images/:id controllers.Images.showImage(id)
def showImage(idWithExt: String) = Action { val id = idWithExt.takeWhile(_ != '.') ... }
所属していません StackOverflow