Architektura heksagonalna - error flow

0

Cześć, tworzę sobie apke w tej o to architekturze w Javie i mam pewien problem. Nie do końca wiem jak zaimplementować exception/error flow w aplikacji, tak by zmapowac go na odpowiedni http status powiedzmy na REST'cie. Interesuje mnie taki flow zarówno z domeny na inbound adaptery, jak i z outbound adapterów do domeny. Mógłby ktoś mi podpowiedzieć gdzie szukać wskazówek na ten temat albo samemu spróbować pomoc?

3

Zaciągasz vavra, w domenie zwracasz sobie Either<WrapperNaErrora, SuccessObject>. Wrapper niech zawiera kod bledu i krotka wiadomosc dlaczego się nie powiodło. W infrastrukturze możesz stworzyć sobie jakąś klasę, która będzie przyjmować tego Eithera czyli np. Either<WrapperNaErrora, ?> i tworzyć obiekt ResponseEntity, który wyplujesz na zewnątrz. Podobnie możesz zaimplementować wyjątki ale po co

2
  1. Either albo Option. Tak naprawdę często Option wystarczy, jeśli się udało to zwracasz wartość, a jeśli nie to pusty Option i go mapujesz na 404. W przypadku kolekcji może być to pusta kolekcja, jako domyślna.
  2. Jakieś obiekty zawierające opis błędów, np. enumy ze statusem zakończenia operacji
3

Jeśli nie chcesz/nie mozesz vavra a mozesz kotlina to można coś podobnego zasymulować też używając sealed class. Masz sealed klase odpowiedzi i po niej dziedziczący sukces i porażki

1
eithervavr napisał(a):

Mógłbyś stworzyć taki przykładową klasę ktore będzie wypluwać ResponseEntity bo też jestem zainteresowany tym tematem, a nie do końca wiem jak to zrobić?

ResponseEntity resolveEither(Either<ResponseError, ?> data) {
        return data
                .map(ResponseEntity::ok)
                .getOrElseGet(ValidationResolver::createErrorResponse);
 }

gdzie createErrorResponse przyjmuje ResponseError

1 użytkowników online, w tym zalogowanych: 0, gości: 1