Jeśli podobają Ci się moje filmy, to zostaw łapkę w górę i za subskrybuj mój kanał. Zapraszam Cię także do zapoznania się z moimi kursami i warsztatami: 🟢 Kurs Hibernate i JPA - kursy.nullpointerexception.pl/hibernate/ 🟠 Warsztat Architektura Heksagonalna - kursy.nullpointerexception.pl/product/warsztat-architektura-heksagonalna/ 🟢 Kurs Testy Jednostkowe - kursy.nullpointerexception.pl/testy-jednostkowe/ 🟠 Warsztat Architektura Warstwowa - kursy.nullpointerexception.pl/product/warsztat-architektura-warstwowa/
@matdabski2 жыл бұрын
@Okultysta Maciej Jak chcesz takiego klienta wykorzystywać i po co to tak chcesz robić, bo nie rozumiem trochę koncepcji? Co do odpalenia projektu springowego na WildFly czy innym serwerze aplikacji, to wystarczy tylko odpowiednia konfiguracja. Budowanie do wara w springu to też można ustawić w konfiguracji. Zajrzyj do dokumentacji Spring Boota
@matdabski2 жыл бұрын
@Okultysta Maciej Trochę to dziwnie wymyśliłeś moim zdaniem. Postamna używam tylko testowo, a docelowo to mógłbym do api podłączyć frontend w Angilarze lub Reactcie, ewentualnie inną aplikację backendową. Dlaczego chcesz to łączyć w jednej aplikacji? Poza tym JSP to prehistoria. Jak chcesz zrobić aplikację. To może na początek zainteresuje się Springiem MVC i budowaniem aplikacji z Thymeleafem, a później dopiero rób coś z REST API.
@matdabski2 жыл бұрын
@Okultysta Maciej To już Ci pokrótce napisałem wyżej. Zacznij od Spring MVC z Thymeleafem (masz to wszystko skonfigurowane w Spring Boot), później możesz iść w REST API i Angulara. Vaadin, JSP, JSF, Swing, Java FX, to przestarzałe technologie. Mam w planach nagrać o tym vloga, być może już niedługo będzie.
@witmea97562 жыл бұрын
Szczerze? Dawno nie trafiłem na tak spoko tutorial, zazwyczaj jak jakiś był to było mielenie tego samego, jakby każdy z twórców sciągał od drugiego. Dobra robota i tak trzymaj! :)
@matdabski2 жыл бұрын
Dzięki 😉
@mtrocki2 жыл бұрын
Dawno nie widziałem tak treściwych i wartościowych materiałów na temat springa po polsku :D
@matdabski2 жыл бұрын
Dzięki 😎
@sebon11 Жыл бұрын
Dokładnie!
@sebon11 Жыл бұрын
Super w ogóle, że korzystasz z tej wtyczki intellij która pokazuje skróty, z których korzystasz :) pomaga to rozwijać się i w tym ważnym obszarze korzystania z IDE :D
@Mayar5552 жыл бұрын
Dobra robota Mateusz. Nawet jako doświadczony programista dużo wyciągam z Twoich materiałów. Oby Ci się chciało jak najdłużej bo wracam regularnie :)
@matdabski2 жыл бұрын
Dzięki za miłe słowa 😉
@stalowa_armia2 жыл бұрын
Bardzo przyjemnie się ogląda. Cenna wiedza w pigułce.
@matdabski2 жыл бұрын
Dzięki 😉
@Julia-ry6vo2 жыл бұрын
Odkryłam ten kanał wczoraj, cieszę się że tutaj trafiłam, dużo konkretnej wiedzy wytłumaczone w zrozumiały sposób
@matdabski2 жыл бұрын
Dziękuję 😉
@sebon11 Жыл бұрын
Byczq, genialny jest ten film. Podobnie jak wiele innych na twoim kanale :)
@RzariRzari2 жыл бұрын
Świetny i treściwy film o esencji resta, dzięki wielkie za niego :)
@kruchyxe20592 жыл бұрын
świetnie wytłumaczone. Wielkie dzięki.
@mirekgab2 жыл бұрын
Dzięki Mateusz za kolejny film. Dużo wiedzy w zwartej formie. Pozdrawiam.
@matdabski2 жыл бұрын
Dzięki 😉
@robertstan61082 жыл бұрын
Kolejny świetny odcinek. Przyda się do prawidłowego projektowania Rest API.
@matdabski2 жыл бұрын
Dzięki Robert 😉
@djamsterdam0072 жыл бұрын
Mateusz, jesteś TheBest'ciak 👍🏻💪🏻
@marcinjozwiak6480 Жыл бұрын
Dzięki!
@mateuszchludzinski49792 жыл бұрын
Super materiał ;)
@Ciunex2 жыл бұрын
super wytłumaczone, dzięki!
@grzdylu2002 жыл бұрын
Hej, próbowałem zrobić coś podobnego u siebie, tylko bez Lomboka i w mojej encji zamiast pola LocalDate mam LocalDateTime i jak coś wysyłam postmanem to wszystko się dodaje spoko poza tym polem LocalDateTime, które się robi nullem, nie wiesz może czemu? 😅
@ProMinecraftSprite2 жыл бұрын
Super materiały nagrywaj więcej🔥🔥🔥
@matdabski2 жыл бұрын
Dzięki 🙂
@belhiaro7652 жыл бұрын
Mam kilka pytań odnosnie REST-a 1. Czym się różni PUT od PATCH i jak często lub do czego rozróżnia się te metody? Chodzi mi kiedy chcemy użyć PUT, a kiedy PATCH? 2. Czy na metodzie PUT id musi być zawsze przekazywane w paramsach/query? Dlaczego nie w body razem z przesłanymi danymi? Jest jakieś dosadne uzasadnienie? 3. To samo pytanie tylko dla metody DELETE Z góry dziękuje za merytoryczną odpowiedź!
@matdabski2 жыл бұрын
Ad.1 PATCH jest przeznaczony do częściowej aktualizacji zasobu, PUT do aktualizacji całego zasobu. Tak jest w teorii, bo w praktyce, możesz zaimplementować to tak samo. Powiedzmy że gdybyś chciał zaktualizować PUTem jakiś zasób wtedy musisz podać wszystkie pola w JSON, bo inaczej wyczyścisz te, których nie podasz (będą nullowe). W PATCH możesz podać tylko jedno pole i powinno się zaktualizować tylko to jedno pole. Tak powinieneś to zaimplementować. Ad. 2 REST nie jest specyfikacją, to zalecenia, więc w teorii nie musi. W praktyce możesz to zaimplementować jak chcesz. Możesz przesyłać w encji lub w dto. Do tego musisz zapewnić, że to ID tam będzie. Bo inaczej będziesz tworzyć nowe zasoby, myśląc, że edytujesz jakiś zasób. Chyba że sprawdzisz, czy to id istnieje i wywalisz wyjątek jeśli nie istnieje(w url nie musisz sprawdzać, bo framework sprawdza to za ciebie). Ad. 3 Tutaj lepiej jest przesyłać id w URL, bo inaczej musisz przekazywać encję lub dto. To jest niepotrzebne, łatwiej, krócej, optymalniej jest przesłać ID w URL w tym przypadku. Dzięki za komentarz 😉
@proxianik33562 жыл бұрын
A po co wykorzystywać ResponseEntity do zwracania statusów? Jak dla mnie jest to przekomplikowane i tego obiektu powinliśmy wykorzystywać tylko wtedy gdy chcemy dodać jakieś dodatkowe headery np do redirecta a status zwracać za pomocą adnotacji
@matdabski2 жыл бұрын
Jasne, można używać adnotacji. ResponseEntity pozwala oczywiście ustawić dodatkowe headery tak jak pokazuję to w przypadku Location, poza tym korzystając z ResponsEntity możesz zwracać różne statusy warunkowo, robiąc po prostu if/else i raz zwracać jeden status raz drugi (rzadko się przydaje, ale jednak), adnotacja nie daje Ci takich możliwości. Poza tym prawie zawsze korzystam z ResponseEntity, do ustawiania statusów (takie moje przyzwyczajenie), co nie znaczy, że trzeba zawsze robić tak samo, chociaż wiem, że wiele osób też tak robi 😉
@paweka91492 жыл бұрын
@@matdabski Mi ResponseEntity przydaje się przy wyjątkach, wiadomo, że można to zrobić w inny sposób no ale
@matdabski2 жыл бұрын
@@paweka9149 Jasne 😉
@waldemarjankowski40902 жыл бұрын
A w jaki sposób najlepiej pobierać różnego rodzaju statystki, np. piszemy backend do obsługi zamówień i wydań z magazynu w obrębie jakiejś firmy. Firma posiada kilkanaście działów i co jakiś czas trzeba wyciągnąć statystyki np. ile długopisów z magazynu pobrał jakiś dział w przeliczeniu na jednego pracownika, albo w jakich miesiącach zamawiane jest najwięcej wody. Lub inny przykład - piszemy backend do obsługi rozgrywek w gry planszowe i chcemy wiedzieć w jaką grę użytkownicy najczęściej grali, albo dany użytkownik najczęściej grał, albo potrzebujemy sporządzić wykres który będzie przedstawiał stosunek wygranych do przegranych gier itd.
@matdabski2 жыл бұрын
Cześć, statystyki można zbierać na różne sposoby w zależności od potrzeb. Jak masz jakiś system zamówień, to na początek możesz odczytywać dane z tabel tego systemu (okresowo) i agregować je. I ewentualnie cachować, albo zapisać w jakiejś tabeli z raportami, żeby wielokrotnie nie czytać tych samych danych. Inny sposób to generować eventy do osobnych tabel i robić zapytania po nich i agregować (możesz też zrobić osobny system do tego jak masz dużo danych). W innych przypadkach podobnie. Jeśli danych jest dużo, to warto zrobić osobny system do raportowani, tak żeby nie obciążać dodatkowo, bazy aplikacji. W springu jest moduł aktuator, który pozwala zbierać techniczne metryki, aplikacji. Możesz też go wykorzystać do wystawiania swoich metryk aplikacji. Takie metryki możesz zbierać Prometeuszem i wyświetlać w Grafanie. Jak potrzebujesz statystyk do strony internetowej to skorzystaj z Google Analitics.
@Adi-ft4eh2 жыл бұрын
Może jakiś film o poprawnej formie obsługi błędów w rest api?
@matdabski2 жыл бұрын
Myślałem nad tym, być może coś się pojawi
@Vemu2 жыл бұрын
Załóżmy że przy aktualizowaniu przy pomocy PUT nie potrzebuję tych wszystkich pól, które potrzebuję przy dodawaniu za pomocą POST. Czy muszę tworzyć osobne DTO do dodawania i aktualizowania czy da się to jakoś inaczej zrobić?
@matdabski2 жыл бұрын
Tak powinieneś mieć osobne DTO.
@dawid48532 жыл бұрын
A co z PATCH? Jakieś za i przeciw?
@matdabski2 жыл бұрын
@@dawid4853 rzadko się używa, więc się nie zmieścił w filmie. Poza tym można implementować tę metodę dosyć dowolnie, więc musiałbym poświęcić sporo czasu na omówienie jej.
@waldemarjankowski40902 жыл бұрын
@@matdabski chętnie obejrzymy :D
@mikolajmikolaj54362 жыл бұрын
Hej Mateusz, super materiał. Mam pomysł na rozszerzenie tego filmu t.j. dodanie stanowości przez JWT i/lub cachaeowania w Redis. Oczywiście o ile znajdą się siły i chęci. Dzięki :)
@matdabski2 жыл бұрын
Dzięki Mikołaj, pomyślę nad tym 😉
@mikolajmikolaj54362 жыл бұрын
i IMO brakuje jeszcze wzmianki o ExceptionHandlerach i ControllerAdvice
@matdabski2 жыл бұрын
@@mikolajmikolaj5436 To już byłoby trochę za dużo na ten materiał. Poza tym to już bardziej temat związany ze Springiem niż z RESTem
@MultiKoliber2 жыл бұрын
29:45 co to za skrót klawiszowy do tworzenia zmiennej statycznej?
@matdabski2 жыл бұрын
Na dole ekrany pojawia się zielony pasek ze skrótami i nazwą operacji. CTRL + ALT + C (C jak constans), są też inne V - varaiable, P - parameter (oczywiście trzeba używać w odpowiednim kontekście).
@Rinn08012 жыл бұрын
Mam pytanie odnośnie optionala. Bo mówisz, że nie powinniśmy go zwracać w service (50:25). Czy używanie go jest czymś złym?
@matdabski2 жыл бұрын
Nie wiem, czy nazwałbym go złym. Generalnie temat jest dosyć skomplikowany i trudno go wytłumaczyć w komentarzu. Zacząłem pisać na ten temat artykuł, ale na razie nie mam czasu, żeby go dokończyć... Podsumuję to krótko, Optional został wprowadzony do Javy, żeby "rozwiązać" problem nulla, ale tego problemu nie rozwiązuje, albo nie do końca rozwiązuje, a przy tym wprowadza dodatkowe problemy. Polecam po googlać jak prawidłowo używać Optionala, bo w wielu przypadkach, które widziałem, był on używany, źle (chociaż research też może nie dać Ci jednoznacznej odpowiedzi). Jak nie wiesz jak używać go prawidłowo, to po prostu nie używaj. W serwisie tworzysz swój kod biznesowy i zwracanie Optionala jest raczej słabym rozwiązaniem, w wielu przypadkach lepszym rozwiązaniem będzie zapewnienie domyślnej wartości, jeśli nie ma danych, lub rzucenie wyjątku. Pamiętaj, że to tylko moja opinia i w różnych przypadkach, w różnym kontekście będzie pasowała lub nie. Kontekst ma duże znaczenie.
@szyszak94242 жыл бұрын
mam glupie pytanie. Jesli chodzi o backend z wykorzystaniem firebase to sa 2 mozliwosci : firestore oraz real time database. W real time database wykorzystuje sie komendy z rest api czyli post, get itd... Natomiast w firestore inaczej to wyglada, a do zapisu i odczytu danych nie uzywa sie post ani get, w takim razie tutaj nie mozna juz mowic o REST API, tak?
@matdabski2 жыл бұрын
Z tego co widzę w dokumentacji to Firebase udostępnia też REST API. Być może używasz tego api poprzez jakąś bibliotekę?
@KonraAdd962 жыл бұрын
Jest jakaś szansa na Soap API?
@matdabski2 жыл бұрын
No nie wiem, to już trochę archeologia, a ja raczej wole nowe technologie ;) ale pomyśle, może kiedyś.
@cnsr2 жыл бұрын
Jednak nie ma to jak długa forma 👍
@matdabski2 жыл бұрын
Jasne 😉
@ArekTheBoss2 жыл бұрын
Chętnie zobaczyłbym materiał o wykorzystaniu wzorca command w api na wzór jak to robi np. Allegro
@matdabski2 жыл бұрын
Chyba chodzi Ci o CQRS, bo tam, ten wzorzec jest wykorzystywany. W sumie różnica jest niewielka w stosunku do zwykłego DTO. Ale przetwarzać command można trochę inaczej. Poza tym CQRSa można implementować na wiele sposobów, więc może to wyglądać różnie. Jak masz jakiś artykuł lub jakiś inny materiał od Allegro to chętnie zerknę.
@piotrh.3567 Жыл бұрын
Zmiłuj się i we wszystkich swoich filmach wyłącz te dzwonki subskrypcji, które doprowadzają mnie do zawału serca. Nikt inny takiej głupoty nie popełnił.