Zapisy otwarte! Dołącz do kursu Selenium w Javie lub Selenium w C#. Tylko do 23.09.2021 do godz. 21:00. Zapisz się tutaj.

API w REST Assured 3. Pierwsze zapytanie do API

Po poprzedniej lekcji wprowadzającej w temat API i czym to w ogóle jest, w tej wyślemy pierwsze zapytanie do API. Pojawi się nowe narzędzie – Postman. Ułatwi nam ono pokazanie z czego składa się żądanie (zapytanie, request) oraz odpowiedź (response).

Dokumentacja do sklepu

Po poprawnym postawieniu aplikacji dokumentację do niej znajdziesz pod localhost/fakestore/dokumentacja/. Tam też znajdziesz np. klucze potrzebne do uwierzytelnienia.

HTTPS w Postmanie

U mnie request po https zadziałał bez problemu, ale u Ciebie na potrzeby tej lekcji może być konieczna zmiana jednego ustawiania w Postmanie. W Postmanie otwórz File > Settings > General i wyłącz SSL certificate verification. W dalszych lekcjach już i tak będziemy pracować po HTTP.

Jeżeli to rozwiązanie nadal nie zadziała, wybierz OAuth 1.0 zamiast Basic Auth. Wtedy w Consumer Key podaj to, co w lekcji jest wrzucone do username (zaczyna się od ck_) a w Consumer Secret to, co na filmie jest w polu Password (zaczyna się od cs_).

Pierwsze zapytanie do API: linki i materiały

Postman

Postman to narzędzie wspierające wytwarzanie API. My będziemy korzystali tylko z jego podstawowej funkcjonalności – klienta API. Narzędzie należy pobrać z www.getpostman.com, tam też znajdziemy dokumentację.

Postmana używać będziemy do rozmawiania z naszym lokalnym “fakeStorem”, a żeby być w stanie to robić wspierać nas będzie dokumentacja jego API. W tej lekcji szczególnie jeden fragment dokumentacji, ten dotyczący produktów.

Pierwsze zapytanie

Zaczniemy od pobrania listy produktów dostępnych w sklepie.  Na tym konkretnym przykładzie zobaczymy z czego składa się zapytanie do API:

  • endpointa (punktu końcowego) – w naszym przypadku jest to adres, pod który wysyłamy request; jest to jakby wskazanie miejsca do którego możemy zapukać o jakiś zasób;
  • nagłówków (które Postman magicznie będzie za nas dodawał);
  • body, czyli ciała (pustego narazie) requestu (żądania).

Response (odpowiedź) podobnie do requesta, również zawiera nagłówek i ciało, ale poprzedzone kodem odpowiedzi.

Parametry

Zobaczycie też przykład wykorzystania parametrów dodawanych do requestu, które pozwolą wam modyfikować, czy filtrować oczekiwane odpowiedzi – można je dopisywać zarówno w pasku adresu, jak i w przeznaczonych do tego celu polach w Postmanie. Jak to dokładnie zrobić pokazuję na filmie.

Uwierzytelnianie

Wykorzystamy w naszych requestach podstawowe uwierzytelnianie (Basic Auth) oraz zobaczymy, że bez niego nie da się z naszego API wyciągnąć danych. To o czym warto wiedzieć, to że Basic Auth, to nic innego, jak dodanie do nagłówka requestu parametru: Authorization, o wartości “Basic xxxxxxx==” gdzie iksy to zakodowany przy użyciu algorytmu base64 ciąg znaków nazwa_użytkownika:hasło. Ponieważ base64 jest łatwo dekodowalny, nie powinniśmy przesyłać w ten sposób informacji bez użycia choćby SSL (w https).

Przy okazji uwierzytelniana przypomnę, że protokół http(s) jest synchroniczny – czyli zawsze operujemy na parach request-response. Sam REST jest także bezstanowy. Oznacza to, że każdy request powinien być całkowicie niezależny i możliwy do przetworzenia przez producenta API (my jesteśmy konsumentem!) bez oglądania się na jakiekolwiek wcześniejsze, czy późniejsze requesty. Po prostu nie istnieje coś takiego jak sesja w przypadku RESTowych API, uwierzytelnianie musi zachodzić w każdym żądaniu.

Ciało odpowiedzi

Na koniec dwa słowa o ciele odpowiedzi. W przypadku RESTowych webservice’ów będą one dostarczane zwykle w formacie XML, lub JSON. My od dziś, już przez cały kurs będziemy działali z JSONami, bo tak też jest zaprojektowane API z którego korzystamy. Na filmie zobaczysz też strukturę JSOna, którą pokrótce wyjaśniam. Zobaczysz co oznacza nawias kwadratowy, a co wąsaty (czyli klamrowy), a więc zobaczysz jak reprezentowane są listy i pojedyncze obiekty.

Wsparcie merytoryczne

Nie masz dostępu do wsparcia merytorycznego dla tego kursu. Wykup dostęp albo zaloguj się, by móc zadawać pytania.

  1. Pomimo podawania username i password ciągle miałam 401 i wywnioskowałam z dokumentacji, że to dlatego że woocomerce każe przy http używać OAuth 1.0. Z tego co widzę, to masz localhost z ssl (https), jednak xampp nie daje od razu takiej możliwości, trzeba się trochę pomęczyć. Walczyłam z tym dość długo, ale w końcu udało mi się wyłączając w ustawieniach opcję "SSL certificate verification". Piszę koment, bo możliwe, że ktoś też będzie miał taki problem 🙂

    Odpowiedz
      • Dla potrzebujących.
        Ten ciag znaków mozna zdekodowac przez pierwsza lepsza online toola do dekodowania base64. np. https://www.base64decode.org/. Zwraca username:password.
        Ale tak jak napisał Kuba/Elka hasło możecie uzyskać na stronie https://fakestore.local/dokumentacja/ (oczywiscie pamietając o urochomieniu fakestore tj. aplikacja Local -> Local Sites: fakestore -> Start Site
        Powodzenia

        Odpowiedz
  2. Sorki ale nie załapałem dokładnie, w którym miejscu ściągnietego pakietu fakestore'a jest zawarty username i password do autentykacji w Postmanie ?

    Odpowiedz
  3. Jak rozwiązać przypadek, kiedy ścieżka do endpointu zawiera nawiasy klamrowe?
    np. GET /locations/{ids}
    private static final String LOCATIONS_IDS_API_PATH = "/locations/ ......... ";

    Odpowiedz