【发布时间】:2015-11-02 08:56:58
【问题描述】:
我有以下代码 sn-p,其中 dataService 返回 Option[LocationDataResult]。 我想在 dataService 返回 None 时设置 NotFound 并在 Some( ...) 的情况下发回数据。
我有以下代码:
val route: Route = {
pathPrefix("service" / "data") {
pathPrefix( "infobox") {
get {
parameters(('mes.as[String], 'oks.as[String])) {
(me, okr) =>
val resp = dataService.ask(GetocationInfoboxData(me,okr)).mapTo[LocationInfoboxDataResult]
.map(remapInfoboxToResponseObject(_)).map { r =>
r match {
case None => StatusCodes.NotFound
case Some(dataToRespond) => dataToRespond
}
}
complete {
resp
}
}
}
}
}
}
implicit val responseMarhaller: Marshaller[LocationInfobox] = Marshaller.of[WikiLocationInfobox](ContentTypes.`application/json`) { (value, contentType, ctx) =>
val result: String = mapper.writeValueAsString(value)
ctx.marshalTo(HttpEntity(contentType, result))
}
我无法从编组器和通过完整功能的路线找到正确的方法,我无法使其工作。
有经验的可以给我一个提示吗?我在这里遗漏了一些重要的概念吗?
谢谢
更新:错误消息“Future[Object] 类型的表达式不符合预期的 ToResponseMarsallable 类型。
【问题讨论】:
标签: scala akka spray spray-dsl