Piszę webservice.W której warstwie należy wykonać sprawdzanie poprawności?
Zazwyczaj dane wejściowe będą dokumentem XML i wyjściowym plikiem XML lub JSON.
Aplikacja wykorzystuje tupot MVC, posiadające różne warstwy
- regulatorów: Otrzymuj XML i dostarczyć odpowiedzi (XML/JSON)
- Usługa: logiki biznesowej, transakcje
- DAO: Zapytanie źródło danych (Baza danych lub może inna usługa sieciowa)
Moje zrozumienie polega na tym, że podstawowa walidacja (tj. XML przeciwko XSD) powinna zostać wykonana jak najszybciej na warstwie sterownika.
Potem jeszcze trzeba wykonać dodatkową walidację, niektóre z tych walidacji są podstawowe, na przykład
- Format daty musi być prawidłowa
- Nazwa użytkownika nie może przekraczać znaków X (może być również wykonywane na XSD?)
O ile rozumiem, takie podstawowe sprawdzenia poprawności powinny zostać wykonane przy usuwaniu XML z obiektu Java. Że też się stało w warstwie kontrolera (chociaż sama walidacja byłyby wykonywane przez obiekt Java gdzie XML unmarshalled do)
I wreszcie czoła więcej „kompleks” walidacji przykłady
- data nie powinien nastąpić przed 1950 (tylko przypadkowy przykład)
- Jeżeli wartość A jest większa niż B, a wartość C nie powinna przekraczać ď
Takie „kompleks” valiations wydaje się, że za fect kandydata do interfejsu javax.validation.Validator. Czuję też, że powinny być wykonane w warstwie kontrolera.
Pytania są
- Czy to podejście prawidłowe? Czy powinienem również zatwierdzić coś na innych warstwach?
- Czy dodaję zbyt wiele logiki do kontrolerów? Czy powinienem przenieść jakieś sprawdzanie poprawności do warstwy usługi, gdzie jest logika biznesowa?
Dla mnie wasza tak zwana "kompleksowa" walidacja brzmi bardziej jak konieczność biznesowa i jako taka powinna być umieszczana na warstwie logiki biznesowej. – mawia
@mawia Dobry punkt, i dzięki Bogu zacytowałem słowo "kompleks" :) –