W tej lekcji obsłużymy pozostałe dwie metody HTTP: DELETE i PUT. Napiszemy razem test, który będzie już wykorzystywał wszystkie cztery operacje z akronimu CRUD.
Dokumentacja do sklepu
Po poprawnym postawieniu aplikacji dokumentację do niej znajdziesz pod localhost/fakestore/dokumentacja/. Tam też znajdziesz np. klucze potrzebne do uwierzytelnienia.
Wersja Javy
W zależności od tego której wersji Javy używasz, mogą się pojawić drobne rozbieżności w sytuacji, w których pobieramy jakąś informację z odpowiedzi metodą get(), a następnie ją „wypluwamy” w konsoli metodą println, np.:
System.out.println(response.jsonPath().get("name"));
Jeżeli nie zadziała Ci to, co pokazuję (będzie się podkreślało na czerwono i po najechaniu zobaczysz „Ambiguous method call”) możesz zamiast get() użyć metody getString():
System.out.println(response.jsonPath().getString("name"));
Metody DELETE i PUT: linki i materiały
W tej lekcji stworzymy obiekt (to już umiemy), następnie zmienimy go (metoda PUT) i jeśli zmiana będzie udana to skasujemy (metoda DELETE). Możemy powiedzieć, że składamy z klocków naszej dotychczasowej wiedzy nowe umiejętności. Ze stworzonego obiektu pobieramy ID, które będzie nam potrzebne w kolejnych krokach.
Zmiana obiektu: PUT
Tym razem spróbujemy obejść się bez Postmana (ale jeśli macie jakieś wątpliwości, albo problemy – polecam nadal do niego sięgać!) i od razu działać w kodzie. Żeby zmienić obiekt musimy:
- strzelić do konkretnego obiektu (URI): endpoint_produktów/nasze_ID,
- określić jaki typ danych będziemy przesyłać: contentType(„application/json”),
- wysłać ciało requestu (body): w nim musimy zawrzeć ten fragment JSONa, który chcemy zmienić,
- wysłać w .when() prawidłową metodę: .put(URI).
Prawidłowy request powinien otrzymać w odpowiedzi kod 200 (takie nasze „zwykłe” OK)
Przypominam, że o ile w wielu webservice’ach będzie to wyglądało podobnie, to informacje te pochodzą bezpośrednio z dokumentacji sztucznosklepowego API.
W odpowiedzi nasze API wysyła nową wersję obiektu, więc już w niej możemy sprawdzać, czy nazwa faktycznie się zmieniła.
Usuwanie obiektu: DELETE
Przejdźmy więc do kasowania – znowu informacje o tej funkcjonalności bierzemy z dokumentacji.
Tam dowiadujemy się, że kasowanie może przyjmować parametr (force=true), w którym możemy wymusić pominięcie “kosza”. Obiekt po prostu zniknie, a dokładnie o to nam chodzi.
Zbierając informacje z dokumentacji musimy:
- strzelić znów do konkretnego obiektu (URI): endpoint_produktów/nasze_ID,
- skoro nie przesyłamy danych, to nie musimy określać ich typu,
- skoro nie ma danych, to nie ma też ciała – body jest puste, więc nie musimy go określać,
- wysłać w .when() prawidłową metodę – .delete(URI),
- określić dodatkowo .queryParam(“force”,”true”): jest to bardzo wygodna i podobna do Postmanowej funkcjonalność RestAssured – nie musimy parametrów sklejać i dokładać do URLa, mamy na to wygodne, osobne miejsce w bloku given().
Prawidłowy request otrzymuje w odpowiedzi 200. Ponieważ jesteśmy testerami, to takie OK otrzymane od DELETE’a to dla nas za mało, to przypomnimy sobie GETa i spróbujemy pobrać obiekt po skasowaniu. Mam nadzieję, że już Wam się buzie cieszą na myśl o tym, że prawidłowym, oczekiwanym kodem odpowiedzi będzie w tym przypadku nie kto inny, a 404!
W ten sposób uzupełniliśmy podstawy i pokryliśmy wszystkie litery akronimu CRUD. Umiecie już tworzyć, czytać, zmieniać i kasować obiekty! Gratulacje! Na tej wiedzy będziecie już bazować do samego końca (mam nadzieję, że nierychłego) Waszych przygód z API.
Komentarze
Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc komentować.