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 に準拠していません。