Wpis z mikrobloga

#programowanie #java #spring #webdev mam kontrolery restowe konsumowane przez angulara i do nich podpięte serwisy które wystawiają mi dostęp do repo - pytanko: walidacja w kontrolerach czy w servisach? chodzi mi o to ze jak użytkownik poda mi lech wałęsa to zebym nie mógł utworzyć mu konta

Gdzie przeprowadzać walidację

  • Kontrolery 39.4% (13)
  • Serwisy 60.6% (20)

Oddanych głosów: 33

  • 10
@martwy_kotek: Walidacja (a właściwie asercje) oczywiście w serwisach. Co jeśli wymienisz kontrolery na inne API? Jednakże serwisy nie muszą "ładnie" walidować, wystarczy, że będą walić exceptiony, a po stronie kontrolerów robisz ładne walidatory, które przetłumaczą te exceptiony na coś zrozumiałego dla REST (np. statusy i messages).
Czyli: po stronie kontrolerów dajesz walidatory, które tłumaczą wyjątki rzucone przez serwisy.
@Jurigag: Model jest reprezentacją problemu LUB logiki afaik. BTW spring ani java niczego nie wymusza, więc twoje hejtowanie to taki poziom trochę elektrody i kłócenia się czy młotek jest fajniejszy czy wiertarka. Całe szczęście z tego sie wyrasta

Problem który poruszyłem dotyczy raczej inżynierii oprogramowania. Dla mnie np wygodniej mieć model jako reprezentację danych a walidację przeprowadzać po stronie serwisu.
@martwy_kotek: dla mnie walidacja to tylko model, tam powinna się znajdować logika biznesowa a takową jest walidacja przecież, pakowanie jej do serwisu to jakiś żart bo co jak zmienimy coś w modelu ? to wtedy musimy także zmieniać serwis, w większości języków i frameworków walidacje pakuje się do modelu, nie wiem, może w javie i springu jest inaczej, ale dla mnie to dziwne żeby trzymać walidacje w serwisie czy kontrolerze, jakoś
@Jurigag: walidację wygodniej przeprowadzać w modelu, tak samo jak patrząc od strony architektury/inżynierii powinna ona znajdować się również w modelu, mam na myśli to że tam powinny znajdować się reguły w jaki sposób model jest walidowany, a to gdzie już sama walidacja będzie przeprowadzana tj w oddzielnych klasach np walidatorach/asercjach czy czymś innym to już kwestia programisty @martwy_kotek: