在 Play 2.7 中,向某些但并非所有结果添加标题的偶像方法是什么



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

大约 50% 的路由会想要设置"as("text/csv"( 标头。我想要一个 AsCSV 操作,它只是附加该标头......

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

我想以某种方式扩展操作,以便我拥有类似csvAction的东西。

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

但是,我迷失在动作构建器,精简器 - 过滤器中...

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

我认为这样它可以工作:

  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

最新更新