Scala 如何在访问请求正文时编写操作?
是否有一种方法可以组合动作,同时在每个动作中访问身体的不同部分? 例如,如果我有一个json,看起来像这样:Scala 如何在访问请求正文时编写操作?,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,是否有一种方法可以组合动作,同时在每个动作中访问身体的不同部分? 例如,如果我有一个json,看起来像这样: { "compayId": 123, "reason": "some_reason", "date": "2017-01-01", "roles": ["1", "2"] } 我想访问审计操作中的“companyId”和“reason”,同时访问实际操作中的“date”和“roles”。 所以我创造了这样的东西,当然不起作用 trait Audit { def
{
"compayId": 123,
"reason": "some_reason",
"date": "2017-01-01",
"roles": ["1", "2"]
}
我想访问审计操作中的“companyId”和“reason”,同时访问实际操作中的“date”和“roles”。
所以我创造了这样的东西,当然不起作用
trait Audit { def auditDao: AuditDao
def audit[A](action: Action[A]) = Action.async(action.parser) { implicit request => {
action(request).flatMap( r =>
Json.toJson(request.body.asInstanceOf[RawBuffer].asBytes().get.toArray).validate[AuditLog].fold( //The instanceOf is ugly, and will not work, it's just for the example
errors => errorsToFutureResult(errors)(request),
audit => auditDao.save(audit).map(_ => r)
)
}
}
}
然后使用审核方法包装我的端点:
def get() = audit(Action.async(BodyParsers.parse.raw) { (request: Request[RawBuffer]) =>
Json.toJson(request.body.asBytes().get.toArray).validate[Roles].fold(
errors => errorsToFutureResult(errors)(request),
roles => //Do stuff with the roles...
)
})
有办法吗?
谢谢 看一看,看一看