Do interakcji z zasobami backendu używane są najczęściej cztery operacje: tworzenie (create) odczytywanie (read), aktualizowanie (update) i usuwanie (delete). Dla każdego z nich zdefiniowana jest standardowa metoda HTTP.
Method
Description
POST
Operacja create - tworzenie nowego zasobu.
GET
Operacja read - pobieranie zestawu zasobów lub jednego zasobu według identyfikatora.
PUT i PATCH
Operacja update - aktualizacja zasobu według identyfikatora.
DELETE
Operacja delete - usuwanie zasobu według identyfikatora
Pokażemy przykładowe żądania do JSONPlaceholder API, które udostępnia kolekcję fałszywych postów w zasobie /posts, reprezentowanych jako obiekty z id, author i body.
Odczytywanie
Metoda HTTP GET służy do pobierania istniejących danych. Metoda fetch() powinna wysłać żądanie GET bez treści do serwera. Backend po otrzymaniu żądania przetworzy je w odpowiedzi i zwróci niezbędne zasoby.
Zróbmy tablicę wszystkich postów. Aby to zrobić, zapoznaj się z zasobem /posts opisanym w dokumentacji backendu. Metoda fetch() domyślnie tworzy żądanie GET, więc nie jest konieczne definiowanie metody żądania.
Metoda POST służy do dodawania nowego zasobu. Metoda fetch() powinna wysłać do serwera żądanie POST, w ciele - body którego będzie obiekt z polami author i body, identyfikator zostanie automatycznie utworzony przez bazę danych. Wynikiem takiego żądania będzie obiekt który został dodany do bazy danych.
Żądanie utworzenia posta wysyłamy, uzyskując dostęp do zasobu /posts, ale w ustawieniach metody fetch() zmieniamy metodę HTTP na POST. Tak więc backend wie, że nie musi odczytywać istniejącego, ale powinien stworzyć nowy zasób w tej kolekcji.
Treść żądania musi być ciągiem, ponieważ protokół HTTP przesyła wszystko jako tekst. Podczas przesyłania złożonych typów danych należy je przekonwertować na ciąg znaków za pomocą metody JSON.stringify(). Nie zapomnij podać nagłówka Content-Type, który określa dla backendu typ przesyłanych danych.
W odpowiedzi, jeśli wszystko jest w porządku, otrzymamy JSON z dodanym id. Identyfikator będzie unikalny dla każdego obiektu.
{
"id": 1,
"author": "Mango",
"content": "CRUD is awesome"
}
S1A4: Aktualizowanie
Obie metody PUT i PATCH służą do aktualizacji istniejących danych. Której metody użyć, zostanie opisane w dokumentacji backendu. Metoda fetch() musi wysłać do serwera żądanie, w treści którego należy wskazać obiekt z polami do zmiany. Ścieżka wskazuje, którą kolekcję i który element chcemy zaktualizować. Backend po otrzymaniu żądania przetworzy je i zwróci w odpowiedzi zaktualizowany zasób.
Wedle konwencji, metoda PATCH zastępuje tylko wartości przekazane w treści żądania właściwości w istniejącym zasobie - czyli aktualizuje go częściowo. Metoda PUT z kolei całkowicie zastępuje zasób lub tworzy go, jeśli jeszcze nie istnieje.
S1A5: Usuwanie
Metoda DELETE służy do usuwania istniejących danych. Metoda fetch() powinna wysłać do serwera żądanie DELETE bez treści. Ścieżka wskazuje, w której kolekcji i który element chcemy usunąć. Backend po otrzymaniu żądania przetworzy je, usunie zasób z kolekcji i zwróci status wyniku w odpowiedzi - czasami zobaczymy tu status 204 czyli operacja przebiegła pomyślnie, ale nie ma dla nas żadnej odpowiedzi (co ma sens ponieważ zasób już nie istnieje)