Я хочу обернуть свои ошибки в скаляр EitherT.
Я написал этот тип, чтобы я мог все там обернуть и выполнять операции внутри для-понимания
type Failure = ResponseEntity[String]
type HttpResult[A] = EitherT[Future, Failure,A]
def fromFOption[A](failure: => Failure)(foa: Future[Option[A]])(implicit ec: ExecutionContext): HttpResult[A] = EitherT(foa.map(_ \/> failure))
Когда я вызываю свойКонтроллер все, что он делает, возвращает пустой JSON. Я предполагаю, что для понимания является тип HttpResult
и не знает, как преобразовать его в правильный ответ отдыха
Вот несколько примеров:
Это не работает:
@RestController
@RequestMapping(path = "mypath")
@AllArgsConstructor
class foo(){
@GetMapping
def controller()
for{
a<- fromFOption(/**body goes here*/)
}
yield new ResponseEntity[String]("RANDOM STRING", HttpStatus.Ok)
}
Но это работает:
for{
a<- fromFOption(/**body goes here*/)
}
yield new ResponseEntity[String]("RANDOM STRING", HttpStatus.Ok)
new ResponseEntity[String]("RANDOM STRING", HttpStatus.Ok)
Так как последнее выражение выполнено, поэтому я предполагаю, что springboot не знает, как преобразовать его в ответ.
Есть ли способ обойти это?