У меня есть следующий фрагмент кода, где dataService возвращает параметр [LocationDataResult]. Я хотел бы установить NotFound, когда dataService возвращает None и отправит данные обратно в случае Some (...).Можно ли установить код ответа от Marshaller в spray.io?
У меня есть следующий код:
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))
}
Я не могу найти правильный путь от ИАС и от маршрута через полной функции я не могу заставить его работать.
Может ли кто-нибудь более опытный дать мне подсказку? Не хватает ли здесь какой-то важной концепции?
Thx
UPDATE: Сообщение об ошибке»Выражение типа будущего [Объект] не соответствует ожидаемому типу ToResponseMarsallable