Wszystko o REST API w Javie

  Рет қаралды 24,510

Mateusz Dąbrowski

Mateusz Dąbrowski

Күн бұрын

Пікірлер: 63
@matdabski
@matdabski 2 жыл бұрын
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/
@matdabski
@matdabski 2 жыл бұрын
@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
@matdabski
@matdabski 2 жыл бұрын
@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.
@matdabski
@matdabski 2 жыл бұрын
@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.
@witmea9756
@witmea9756 2 жыл бұрын
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! :)
@matdabski
@matdabski 2 жыл бұрын
Dzięki 😉
@mtrocki
@mtrocki 2 жыл бұрын
Dawno nie widziałem tak treściwych i wartościowych materiałów na temat springa po polsku :D
@matdabski
@matdabski 2 жыл бұрын
Dzięki 😎
@sebon11
@sebon11 Жыл бұрын
Dokładnie!
@sebon11
@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
@Mayar555
@Mayar555 2 жыл бұрын
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 :)
@matdabski
@matdabski 2 жыл бұрын
Dzięki za miłe słowa 😉
@stalowa_armia
@stalowa_armia 2 жыл бұрын
Bardzo przyjemnie się ogląda. Cenna wiedza w pigułce.
@matdabski
@matdabski 2 жыл бұрын
Dzięki 😉
@Julia-ry6vo
@Julia-ry6vo 2 жыл бұрын
Odkryłam ten kanał wczoraj, cieszę się że tutaj trafiłam, dużo konkretnej wiedzy wytłumaczone w zrozumiały sposób
@matdabski
@matdabski 2 жыл бұрын
Dziękuję 😉
@sebon11
@sebon11 Жыл бұрын
Byczq, genialny jest ten film. Podobnie jak wiele innych na twoim kanale :)
@RzariRzari
@RzariRzari 2 жыл бұрын
Świetny i treściwy film o esencji resta, dzięki wielkie za niego :)
@kruchyxe2059
@kruchyxe2059 2 жыл бұрын
świetnie wytłumaczone. Wielkie dzięki.
@mirekgab
@mirekgab 2 жыл бұрын
Dzięki Mateusz za kolejny film. Dużo wiedzy w zwartej formie. Pozdrawiam.
@matdabski
@matdabski 2 жыл бұрын
Dzięki 😉
@robertstan6108
@robertstan6108 2 жыл бұрын
Kolejny świetny odcinek. Przyda się do prawidłowego projektowania Rest API.
@matdabski
@matdabski 2 жыл бұрын
Dzięki Robert 😉
@djamsterdam007
@djamsterdam007 2 жыл бұрын
Mateusz, jesteś TheBest'ciak 👍🏻💪🏻
@marcinjozwiak6480
@marcinjozwiak6480 Жыл бұрын
Dzięki!
@mateuszchludzinski4979
@mateuszchludzinski4979 2 жыл бұрын
Super materiał ;)
@Ciunex
@Ciunex 2 жыл бұрын
super wytłumaczone, dzięki!
@grzdylu200
@grzdylu200 2 жыл бұрын
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? 😅
@ProMinecraftSprite
@ProMinecraftSprite 2 жыл бұрын
Super materiały nagrywaj więcej🔥🔥🔥
@matdabski
@matdabski 2 жыл бұрын
Dzięki 🙂
@belhiaro765
@belhiaro765 2 жыл бұрын
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ź!
@matdabski
@matdabski 2 жыл бұрын
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 😉
@proxianik3356
@proxianik3356 2 жыл бұрын
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
@matdabski
@matdabski 2 жыл бұрын
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 😉
@paweka9149
@paweka9149 2 жыл бұрын
@@matdabski Mi ResponseEntity przydaje się przy wyjątkach, wiadomo, że można to zrobić w inny sposób no ale
@matdabski
@matdabski 2 жыл бұрын
@@paweka9149 Jasne 😉
@waldemarjankowski4090
@waldemarjankowski4090 2 жыл бұрын
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.
@matdabski
@matdabski 2 жыл бұрын
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-ft4eh
@Adi-ft4eh 2 жыл бұрын
Może jakiś film o poprawnej formie obsługi błędów w rest api?
@matdabski
@matdabski 2 жыл бұрын
Myślałem nad tym, być może coś się pojawi
@Vemu
@Vemu 2 жыл бұрын
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ć?
@matdabski
@matdabski 2 жыл бұрын
Tak powinieneś mieć osobne DTO.
@dawid4853
@dawid4853 2 жыл бұрын
A co z PATCH? Jakieś za i przeciw?
@matdabski
@matdabski 2 жыл бұрын
@@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.
@waldemarjankowski4090
@waldemarjankowski4090 2 жыл бұрын
@@matdabski chętnie obejrzymy :D
@mikolajmikolaj5436
@mikolajmikolaj5436 2 жыл бұрын
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 :)
@matdabski
@matdabski 2 жыл бұрын
Dzięki Mikołaj, pomyślę nad tym 😉
@mikolajmikolaj5436
@mikolajmikolaj5436 2 жыл бұрын
i IMO brakuje jeszcze wzmianki o ExceptionHandlerach i ControllerAdvice
@matdabski
@matdabski 2 жыл бұрын
@@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
@MultiKoliber
@MultiKoliber 2 жыл бұрын
29:45 co to za skrót klawiszowy do tworzenia zmiennej statycznej?
@matdabski
@matdabski 2 жыл бұрын
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).
@Rinn0801
@Rinn0801 2 жыл бұрын
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?
@matdabski
@matdabski 2 жыл бұрын
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.
@szyszak9424
@szyszak9424 2 жыл бұрын
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?
@matdabski
@matdabski 2 жыл бұрын
Z tego co widzę w dokumentacji to Firebase udostępnia też REST API. Być może używasz tego api poprzez jakąś bibliotekę?
@KonraAdd96
@KonraAdd96 2 жыл бұрын
Jest jakaś szansa na Soap API?
@matdabski
@matdabski 2 жыл бұрын
No nie wiem, to już trochę archeologia, a ja raczej wole nowe technologie ;) ale pomyśle, może kiedyś.
@cnsr
@cnsr 2 жыл бұрын
Jednak nie ma to jak długa forma 👍
@matdabski
@matdabski 2 жыл бұрын
Jasne 😉
@ArekTheBoss
@ArekTheBoss 2 жыл бұрын
Chętnie zobaczyłbym materiał o wykorzystaniu wzorca command w api na wzór jak to robi np. Allegro
@matdabski
@matdabski 2 жыл бұрын
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
@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ł.
@Coring
@Coring 2 жыл бұрын
ни черта не понял, но спасибо.
Jak łączyć się z zewnętrznym API w Javie
34:35
Mateusz Dąbrowski
Рет қаралды 13 М.
Spring Boot i wstrzykiwanie zależności - podstawy
25:32
Jak nauczyć się programowania
Рет қаралды 37 М.
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН
Tuna 🍣 ​⁠@patrickzeinali ​⁠@ChefRush
00:48
albert_cancook
Рет қаралды 148 МЛН
Tutorial Javascript i REST API, ale bez ściemy
3:21:37
Jak zacząć programować?
Рет қаралды 34 М.
Czym jest Web Service i REST API?
18:34
Jak nauczyć się programowania
Рет қаралды 74 М.
NAJEFEKTYWNIEJSZA DROGA DO TWORZENIA REST API W SPRING
3:45:44
Przemek Bykowski
Рет қаралды 24 М.
Mapowanie obiektów w aplikacji Spring (Spring Boot)
38:44
Mateusz Dąbrowski
Рет қаралды 8 М.
Nie ucz się tych technologii! - Vlog20
13:50
Mateusz Dąbrowski
Рет қаралды 5 М.
Spring Boot - REST API + CRUD + Upload Aplikacji Na Server
1:22:24
Przemek Bykowski
Рет қаралды 34 М.
Jak przekwalifikowałem się na programistę - Vlog12
19:48
Mateusz Dąbrowski
Рет қаралды 2,8 М.
Co powinien umieć Mid Developer - Vlog18
16:31
Mateusz Dąbrowski
Рет қаралды 4,6 М.
Czym jest (REST) API? ⌨️ hello roman #138
34:58
hello roman
Рет қаралды 42 М.