我正在使用带有 json4s 的喷雾,并且我有下面的实现来处理更新对象的 put 请求......我的问题是,我首先从 json 中提取 SomeObject 的一个实例,但它是一个 RESTful api,我希望在 URL 中指定 ID。因此,我必须以某种方式创建另一个使用 ID 索引的 SomeObject 实例……为此,我使用了像 SomeObject(id: Long, obj: SomeObject) 这样的构造函数。它工作得很好,但实现起来很丑陋,而且感觉效率低下。我该怎么做才能以某种方式将 ID 粘贴在那里,以便我只创建 SomeObject 的一个实例?
class ApplicationRouter extends BaseRouter {
val routes =
pathPrefix("some-path") {
path("destination-resource" \ IntNumber) { id =>
entity(as[JObject]) { rawData =>
val extractedObject = rawData.camelizeKeys.extract[SomeObject]
val extractedObjectWithId = SomeObject(id, extractedObject)
handleRequest(extractedObjectWithId)
}
}
}
}
case class SomeObject(id: Long, data: String, someValue: Double, someDate: DateTime) {
def this(data: String, someValue: Double, someDate: DateTime) = this(0, data, someValue, someDate)
def this(id: Long, obj: SomeObject) = this(id, obj.data, obj.someValue, obj.someDate)
}