0

假设我有一个非常简单的动作;

我大约 50% 的路线需要设置“as("text/csv") 标头。我想要一个仅附加该标头的 AsCSV 操作...

def simples: Action[AnyContent] = Action.async{Ok(someCSVdata).as("text/csv")}

我想以某种方式扩展动作,这样我就有了类似 csvAction 的东西。

def simples: Action[AnyContent] = csvAction{Ok(someCSVdata)}

但是,我迷失在 ActionBuilders、Refiners - 过滤器中......

有没有一种简单的方法可以做到这一点?

4

1 回答 1

0

我认为这样它可以工作:

  def okCsvAction[A](action: Request[A] => Future[Result]) =
    Action.async(parse.empty) { implicit request =>
      action(request).map(_.as("text/csv"))
    }

  def someCSVdata = ???

  def simples = okCsvAction { implicit request =>
    Future.successful(Ok(someCSVdata))
  }

如果我们把它放在一个更好的特征中,与这个非常相似的东西来提取我们可以在这里找到的预定动作:https ://github.com/adrianhurt/play-api-rest-seed

于 2019-08-17T03:12:43.083 回答