требуют реализовать rest API, в response body которого должно быть boolean поле. Поле указывает на успешность операции, например status.
Я же хочу иметь интерфейс, который возвращает Either[Error, R]. Мне это поле ни к чему, поэтому я написал свой энкодер, который добавляет его внутрь ответа:
https://scastie.scala-lang.org/mjBstK3DSXSRdDn68Bzv0A
implicit def encodeReply[R](
implicit
left: Encoder[Error],
right: Encoder[R]
): Encoder[Either[Error, R]] = { o: Either[Error, R] =>
o.fold(_.asJson, _.asJson).mapObject(_.+:("status", o.isRight.asJson))
}
Это работает в AkkaHttp. Но на сколько так делать плохо? И как пропихнуть этот энкодер в Tapir?
В тапире можно в еррор боди делать отдельный кодек жсона
Нормально
Обсуждают сегодня