假设我有一个非常简单的操作;
大约 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