Gdzie powinna być walidacja czy wpisywane wartości do dto są spójne z bazą?

Odpowiedz Nowy wątek
2018-11-12 12:57
0

Użytkownik chce dodać nowego kierowcę do systemu, ma formatkę i podaje jego login. Formatka tworzy dto, który potem jest przekonwertowywany do source i zapisywany.
W bazie może być już użytkownik Julian i nie można zapisać 2 Julianów. Walidacja sprawdzająca czy podany nick nie występuje już w bazie powinna być w controllerze, serwisie czy we froncie czy gdzie?

Tak jest OK?

@Service
public class UserServiceImpl implements UserService {

    // ...

        @Override
    public UserDto createNewUser(UserDto userDto) {
        if(userRepo.existsByLogin(userDto.getLogin())) {
            throw new ResourceAlreadyExistException("Login " + userDto.getLogin() + " already exist.");
        }
        User usr = userMapper.dtoToNewSource(userDto);
        return this.saveUser(usr);
    }

}
edytowany 5x, ostatnio: Julian_, 2018-11-12 14:33

Pozostało 580 znaków

2018-11-12 18:05
1
Walidacja sprawdzająca czy podany nick nie występuje już w bazie powinna być w controllerze, serwisie czy we froncie czy gdzie?

Minimum w serwisie (backend nie powinien wpuścić czegoś co jest niepoprawne do bazy). Ale dobrze by było i na froncie - fajnie gdyby użytkownik szybko dostał informację o takiej sytuacji.

Jak będzie w serwisie to teoretycznie w kontrolerze już nie ma większego sensu.

edytowany 1x, ostatnio: teez, 2018-11-12 18:05

Pozostało 580 znaków

2018-11-12 19:14
eL
1

Moim zdaniem kontroler jest spoko. Serwis z reguły traktuje jako coś co wykonuje już kilka operacji na spójnych danych, np chce usunąć jakiś zasób po nazwie. Serwis pobiera listę zasobów które spełniają dane kryteria i wszystko usuwa wiec operacja w serwisie jest już transakcja. Zanim wiec wykonywane będą jakieś operacje to musza być walidowane czyli wrzucam to do kontrolera. Chyba ze dzieje się tam dużo więcej magii i logiki to wtedy warto się bardziej zastanowić.
Ps. Dodatkowo na froncie tez warto zrobić walidacja ale po stronie serwera mimo wszystko dla bezpieczeństwa wole te dane raz jeszcze sprawdzić.

edytowany 1x, ostatnio: eL, 2018-11-12 19:17

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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