如何在 Play 中 return 具有 404 状态代码的资产?
How do I return assets with a 404 status code in Play?
目前我有一个使用 Scala 的播放应用程序,我在 public 文件夹中将前端作为 SPA。
我有一个 /404 路由,我想 return 状态代码为 404 的前端。
但是,如果我写:
def returnNotFound(): Action[AnyContent] = Action {
NotFound(assets.at("index.html"))
}
然后我得到一个编译错误,因为资产 return 是一个动作,而不是一个可写的。
那么如何才能return public文件夹中的index.html状态码为404呢?
这里的问题是 assets.at("index.html")
returns Action[AnyContent]
应该是 Controller
的 return 方法,因此为了改变状态你需要更改 assets.at
的结果,例如:
def returnNotFound(): Action[AnyContent] = Action.async { implicit request =>
assets.at("index.html")(request).map { result =>
new Result(result.header.copy(status = 404), result.body)
}
}
目前我有一个使用 Scala 的播放应用程序,我在 public 文件夹中将前端作为 SPA。 我有一个 /404 路由,我想 return 状态代码为 404 的前端。 但是,如果我写:
def returnNotFound(): Action[AnyContent] = Action {
NotFound(assets.at("index.html"))
}
然后我得到一个编译错误,因为资产 return 是一个动作,而不是一个可写的。 那么如何才能return public文件夹中的index.html状态码为404呢?
这里的问题是 assets.at("index.html")
returns Action[AnyContent]
应该是 Controller
的 return 方法,因此为了改变状态你需要更改 assets.at
的结果,例如:
def returnNotFound(): Action[AnyContent] = Action.async { implicit request =>
assets.at("index.html")(request).map { result =>
new Result(result.header.copy(status = 404), result.body)
}
}