我遇到了一个问题,游戏无法识别以下路线/assets
和/assets/id
并返回{"error":{"code":404,"message":"The resource you requested could not be found","errors":["Resource not found by Assets controller"]}}
如果我删除/assets/*file
那么它适用于/assets
和/assets/id
. 知道我做错了什么吗?
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
GET /assets/ mypackage.AssetController.getData(name: Option[String])
GET /assets/:id mypackage.AssetController.getDataId(id: Long)
路由文件是关于顺序和模式的(文件最高优先级中的第一个(。
因此,在您的路由中,一切都与/assets/*file
匹配。
GET /assets/:id
也不是静态的,因为您可以考虑另一条路线。
这里有一个例子:
GET /images/:id mypackage.AssetController.getDataId(id: Long)
GET /assets/*file controllers.Assets.at(file)
或者如果你想保留/assets/:id
GET /assets/:id mypackage.AssetController.getDataId(id: Long)
GET /assets/*file controllers.Assets.at(file)
在这里,您必须知道,只有类似/assets/images/img.png
的东西才会与第二条路线匹配。(只有一个斜杠,例如 /assets/img.png
将与第一条路线匹配。
所以我不知道你对拥有 3 条/assets
相关路线的意图。这里有两件事:
单行路由定义(具有
/assets/*file
的路由(是获取视图模板中的脚本和样式表文件(来自/public
(所必需的。这就是你所需要的!那么,为什么要有另外两条路线呢?您还想添加哪些其他内容 资产文件夹?路线的顺序很重要,顺序是从上到下,直到匹配为止。例如,如果我有:
GET /blog/:name controllers.Blog.get(name: String) GET /blog/iwillNeverGetPickedUp controllers.Blog.cantBeUsed
永远不会被拾取;因为第一条路线首先被匹配。也就是说,实际上是您使用路由创建的方案。这是在您的assets/:id
和assets/*file
路线之间。