与其他资源一起播放静态资源的路由问题



我遇到了一个问题,游戏无法识别以下路线/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相关路线的意图。这里有两件事:

  1. 单行路由定义(具有 /assets/*file 的路由(是获取视图模板中的脚本和样式表文件(来自/public(所必需的。这就是你所需要的!那么,为什么要有另外两条路线呢?您还想添加哪些其他内容 资产文件夹?

  2. 路线的顺序很重要,顺序是从上到下,直到匹配为止。例如,如果我有:

    GET /blog/:name                     controllers.Blog.get(name: String) 
    GET /blog/iwillNeverGetPickedUp     controllers.Blog.cantBeUsed
    
第二条路线

永远不会被拾取;因为第一条路线首先被匹配。也就是说,实际上是您使用路由创建的方案。这是在您的assets/:idassets/*file路线之间。

最新更新