我有类似于下面的情况,如果请求来自UI,则在执行其他任何操作之前,必须首先验证请求。但是,如果请求不是从UI提交的 - 但通过EDI说 - >在这种情况下,有一些商务请求如何在请求中填充子数据“id”后继续父数据并将父数据标识使用到子数据部分。这个细节对于这个问题并不重要。基于请求参数更改函数调用序列
为了方法调用改变顺序在for
理解我有类似于下面的东西看起来有点重复和非惯用。有没有更好的方法来实现这一目标?
def persistData(req : Request) = {
req.actionFromUI match{
case Some(_) => for{
validatedReq <- validateRequest(req) //1st thing
transformedReq <- transformRequest(validatedReq)
persitedReq <- persistRequestData(transformedReq)
}
case None => for{
transformedReq <- transformRequest(validatedReq)
persitedReq <- persistRequestData(transformedReq)
validatedReq <- validateRequest(persitedReq) //last thing
}
}
}