Sprawdzanie nulli w danych przesłanych przez użytkownika

0

Jakie jest najlepszy sposób na sprawdzanie czy dane przesłane przez użytkownika są nullami? Np. przychodzi z kontrolera request RegisterUserRequest z polami username i password. Wiem, że najbardziej prymitywny sposób to sprawdzanie każdego parametru ifami, ale przy dużej ilości requestów i pól może być to uciążliwie. Chciałbym zwracać Eithery typu Either.left(new NullValue(...) z wiadomością "Null value: " i tutaj nazwa wartości, tylko raz, że to sporo pisania i nie wiem jak się dobrać sensownie do nazw pól. Z tego co czytałem, to najlepiej sobie z tym radzi javax validation, bo wtedy wystarczy dać nad polem @NotNull(message), ale tak jak napisałem, chciałbym zostać przy Eithera i unikać magii.

1

Jeżeli chodzi o nulle ja bym użył javax.validation NotNull / NotBlank. Tak jest po prostu najszybciej. Jeżeli wystawiasz jakieś api, którego kontrakt mówi, że jakieś pola nie mogą być nullami to to, że ktoś przekazał nulla w requescie wgl nie powinno mieć miejsca taki błędny request nie powinnien być wgl wysłany a jeżeli jest tzn, że źle zintegrowano się z tym api dlatego też moim zdaniem Either nie ma tu racji bytu.

3

eithery raczej do logiki biznesowej, a walidacja inputu to wspomniane wcześniej javax.validation, nie ma co przekombinowywać.

3

A wystarczyło użyć ludzkiego języka Kotlin i już.

1

Jest taka całkiem popularna biblioteka https://beanvalidation.org/ , możesz jej użyć do walidacji

0

Dzięki wszystkim. Będę używać javax validation i @NotNull.

0

Nie korzystaj z javax wszedzie. .

Warstwa walidacji leksyklanej/technicznej ktora stosujesz to pattern by badac DTO'sy w obecnej wersji API. Nie polecam stosować tego na bazie. Czemu? Baza zyje dlugo, moze sa pola ktore kiedys były nullami itd.

Eithery sa gdy chcesz uzywac podzialu w logice biznesowej. Czasem null jest wartością biznesową (antypattern) i informuje nas o czymś, niesie entropie, wiec zwróc uwagę na to.

Natomiast do przetwarzania potencjalnych nulli w serwisach dedykowany jest optional, unikasz arrow-pattern, a odpowedzialność za NPE jest zwalana na mityczną monadę.

1

User nie da rady Ci wysłać null, bo null to jest element języka. User najwyżej Ci może wysłać bajty albo String.

To o czym mówisz, to być może to że biblioteka lub framework z którego korzystasz parsuje pewne dane w taki sposób że daje Ci null.

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