3
根據play documentation這是一個自定義操作應該是什麼樣子:播放2.4:攔截和修改響應主體
object CustomAction extends ActionBuilder[Request] {
def invokeBlock[A](request: Request[A], block: Request[A] => Future[Result]): Future[Result] = {
block(request)
}
}
但是說如果我想追加「富」到每個響應的身體,我該怎麼辦那?顯然以下不起作用:
block.andThen(result => result.map(r => r.body.toString + "foo")).apply(request)
任何想法?
UPDATE:東西值得一提的是,這一行動將在控制器中主要用作異步:
def test = CustomAction.async {
//...
}
謝謝,這是工作,但有一個問題 - 解決方案默認爲「好」,並將覆蓋其他響應類型,如「BadRequest」 – Caballero
我的例子本意很簡單,爲了使它更加完整,您需要從ResponseHeader讀取結果狀態並適當地處理新的結果 – josephpconley