目前我有一种方法,接受ModelA
并知道对它执行操作。斯卡拉的最佳做法是什么将有一种方法接受两种不同的模型
因此,在我的控制器中,我接受ModelA
的请求并使用它调用此方法。
现在,我想能够接受ModelB
的请求,将请求映射为ModelA
(导致它具有相同的数据,而不是全部和不同的名称),并调用此方法。
可以说,该方法将如下所示:
def myMethod(data: ModelA): ResModel = {
// do something with data
}
我控制器currrently是:
def doActions(): Action[JValue] = { request =>
val dataExctracted = request.body.extract[ModelA]
myMethod(dataExctracted)
...
}
和我的两个型号都是在单独的文件只是case类:
case class ModelA(a: String, b: String, c: String)
case class ModelB(aAsDifferentName: String, bAsDifferntName: String)
Scala的最佳实践是让myMethod接受两种模型(没有Either
)?以及控制器应该如何反应?
是否还有一种经典的方式来返回不同的模型,而不必接受不同控制器方法中的调用?
谢谢!
让他们实现一个虚拟特质并对类型进行模式匹配。 –
你如何决定从request.body中提取什么类型? – laughedelic