我遇到的问题是游戏无法识别以下路线/assets
和/assets/id
并返回{"error":{"code":404,"message":"The resource you requested could not be found","errors":["Resource not found by Assets controller"]}}
如果我删除了/assets/*file
,那么它适用于{{ 1}}和/assets
。任何想法我做错了什么?
/assets/id
答案 0 :(得分:0)
路由文件是关于顺序和模式(首先是文件中最高优先级)。
因此,在您的路由中,所有内容都与/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
将与第一条路线匹配。
答案 1 :(得分:0)
好的,所以我不知道你有3条/assets
相关路线的意图。这里有两件事:
在视图模板中获取脚本和样式表文件(来自/assets/*file
)需要一个线性路径定义(路径为/public
)。这就是你所需要的!那么为什么你想要另外两条路线呢?您想要添加资产文件夹的其他内容是什么?
路线的顺序很重要,顺序是从上到下,直到匹配。例如,如果我有:
GET /blog/:name controllers.Blog.get(name: String)
GET /blog/iwillNeverGetPickedUp controllers.Blog.cantBeUsed
第二条路线永远不会被拾起;因为第一条路线首先匹配。也就是说,实际上是您使用路线创建的场景。在assets/:id
和assets/*file
路线之间。