Skip to content

Witaj w Świecie Jutra!

  • Technologie jutra
  • Sprzęt jutra
  • Aplikacje jutra
  • Programowanie
  • Księga Drogi
  • Renowacja
  • Różności
  • Archiwum
  • Autor
  • Home
  • Wszystko
  • Czym jest Swagger?
  • Programowanie
  • Wszystko

Czym jest Swagger?

Jakub Raczkowski 22 lipca 2024

Jak pochwalić się backendem? Z frontem sprawa jest jasna: wrzucamy projekt na serwer i udostępniamy adres www prowadzący np. do index.html gdzie dzieje się cała magia. A co z API? Swagger (Open API 3.0) ma na to odpowiedź.

Uwaga! W tej serii zajmuję się opisowym przedstawieniem tematu, a celem jest zapoznanie z zagadnieniem w sposób luźny i zrozumiały dla nowicjusza. W związku z tym wiele elementów siłą rzeczy musi zostać pominiętych. Tych z was, którzy chcieliby się dowiedzieć więcej, zapraszam do źródeł na końcu artykułu.

Wyobraźcie sobie, że tworzycie backend do jakiegoś programu.

GUI albo nie ma wcale, albo jest takie, że już chyba lepiej jakby go nie było. Z resztą… c**j z nim, nieważne, liczy się żeby logika działała z sensem, a SQL-ki były dobrze zoptymalizowane.

To w końcu backend.

No i jest! W końcu! Sukces, udało się! Program robi co ma robić, testy przechodzą, wszystkie wyjątki wyłapane i obsłużone. Appka zapakowana w elegancki kontener i wywalona na serwer. Koniec?

Program startuje, ale do końca jeszcze daleko.

API to inaczej: „interfejs dostępu do aplikacji”. Jeśli jest stworzony w popularnym standardzie REST to sprowadza się do wystawienia endpointów i ustawienia metod HTTP jakie one obsługują.

Dla przykładu powiedzmy, że zrobiliśmy aplikację do odsłuchiwania utworów muzycznych. Mamy bazę danych z piosenkami i aplikację która daje do nich dostęp, np. pod adresem www.moja.muza – jak tylko tam wejdziemy zacznie się odtwarzać losowy kawałek. To mogłoby wystarczyć, ale lepiej jak damy użytkownikowi jakąś kontrolę nad naszym playerem i wystawimy w tym celu dedykowane endpointy:

– www.moja.muza/pause -> pauzuje odtwarzany utwór (HTTP GET)
– www.moja.muza/play -> wznawia odtwarzany utwór (HTTP GET)
– www.moja.muza/{rating} -> nasza osobista ocena lecącej piosenki (HTTP GET)
– www.moja.muza/remove/{track_id} -> możliwość szybkiego usunięcia danego utworu z bazy (HTTP DELETE)

API gotowe, teraz można zabrać się za front i sprawić żeby to jakoś wyglądało. Tu, rzecz jasna, pojawia się zgrzyt, bo przecież siedzisz w backendzie i nie znasz się na HTML, CSS i JS.

Prosisz o pomoc kolegę. Ten się zgadza i chce dokumentację twojego API. Wysyłasz mu w komunikatorze pokazane powyżej endpointy (trochę wieje amatorszczyzną, ale przecież nie ma tego dużo więc po co kombinować?) i zaczyna się budowa strony wejściowej.

A ty tymczasem czekasz, nudzisz się, patrzysz na swój kod i do głowy przychodzą ci nowe pomysły…

  • Pause? Play? Po co aż tak? Przecież jeden endpoint może obsłużyć obie te komendy: jak gra to pauzuje, a jak nie gra to włącza.
  • Rating? Hmm, a może zamiast suchej oceny dodać komentarz? No ale wtedy trzeba by tekst wysłać JSON-em i lepiej zmienić metodę na POST.
  • Zaraz, ale nie chcę żeby każdy mógł wywalać piosenki z mojej bazy! Tylko admin, czyli ja!


Modyfikujesz więc swój kod i wysyłasz poprawioną wersję do kolegi. Ten trochę marudzi, ale koniec końców bierze się za zmiany.

A ty tymczasem czekasz, nudzisz się, patrzysz na swój kod i do głowy przychodzą ci nowe pomysły…

  • A co jeśli komuś nie podejdzie ta piosenka? Przydałaby się możliwość przeskoczenia do następnej w kolejce.
  • Albo przeciwnie – utwór tak wszedł, że użytkownik chce go usłyszeć jeszcze raz!
  • A może w ogóle zrobimy osobistą listę ulubionych, wtedy jeden endpoint pobiera listę, a inny dodaje/usuwa z niej utwory.

Modyfikujesz więc swoje API i wysyłasz poprawioną wersję do kolegi. Ten już powoli traci cierpliwość, ale zagryza wargi i leci z tematem.

A ty tymczasem czekasz, nudzisz się, patrzysz na swój kod i do głowy przychodzą ci nowe pomysły…

Swagger to nie tylko dokumentacja, ale również dobre praktyki i rodzaj standardu publikacji API

Mam nadzieję, że już widzicie problem który staram się nakreślić:

Program z czasem ewoluuje
i to samo powinna robić jego dokumentacja.

Owszem, możemy dokumentować API samodzielnie w edytorze tekstu. Ba! Możemy po prostu wrzucić kod do Chata GPT i jego poprosić o wygenerowanie dokumentacji! Chwila moment i gotowe!

Ale to i tak nic
w porównaniu z tym
co oferuje Swagger.

Jeśli chciałbym opisać jednym zdaniem czym jest Swagger (znany również pod nazwą OpenAPI) to jest to dodatek do projektu – wrzucany jako kolejna zależność w Mavenie/Gradle, który zajmuje się dynamicznym tworzeniem dokumentacji wystawionych endpointów.

W Swaggerze znajdziemy wszystkie endpointy (pogrupowane wg kontrolerów), info na temat metod HTTP jakie się za nimi znajdują, szablony obiektów JSON jakie możemy wysłać, nagłówki, zwracane kody, możliwe wyjątki, opisy…

Swagger pozwoli też na wypróbowanie każdego endpointa przez co świetnie sprawdza się jako narzędzie do szybkiego testowania API – do podstawowych zastosowań nie musimy nawet uruchamiać Postmana!

GUI Swagger jest proste i czytelne. Wszystko widać jak na dłoni.

Gaminatorium

Swagger jest nieodłącznym elementem API Gaminatorium dzięki któremu informujemy frontend o tym co zostało już zrobione i z jakich endpointów mogą korzystać testując własny kod.

Uwielbiam prostotę jaką charakteryzuje się OpenAPI, wystarczy, że dodam poniższą zależność do Gradle i gotowe*!

implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.5.0'

(*) Prawie, bo trzeba jeszcze napisać krótką klasę konfiguracyjną dodającą opowiedniego Bean’a do Springa

Teraz za pomocą prostej adnotacji mogę samodzielnie dodać opis endpointa, który pokaże się w GUI Swaggera, natomiast cała reszta zostanie wygenerowana w pełni automatycznie!

Pomarańczowym kolorem zaznaczyłem adnotacje Swaggera pozwalające dodać własne opisy.
Tak wygląda przykładowa dokumentacja pojedynczego endpointa. Przycisk „Try it out” pozwala od razu sprawdzić czy działa.

Swagger jest trochę jak Lombok (o nim też będzie stosowny tekst) – na początku zastanawiamy się: „po co nam to?”. Po co dodawać kolejne zależności i komplikować strutkurę projektu? Ale kiedy już raz spróbujemy tej wygody to ciężko będzie kiedykolwiek wrócić do starych metod.

Podsumowując, Swagger jest świetny, bo:

– dodanie go do projektu to chwila-moment
– sam dokumentuje API i robi to kompleksowo, ogarnia wszystkie niezbędne rzeczy
– owa dokumentacja zmienia się dynamicznie, razem z kodem – kolejna rzecz o której już nie musimy pamiętać
– oferuje proste, ale czytelne GUI gdzie znajdziemy wszelkie niezbędne informacje i sami sprawdzimy czy wszystko działa

    Na początku tego milenium popularne były komedie o amerykańskich nastolatkach, w których „przeciętna dziewczyna” nagle staje się boginią po szybkiej zmianie stylówy. Dokładnie to samo robi Swagger dla backendu.

    Źródła:
    – Kanał Przemka Bykowskiego YT/POL
    – Swagger.io – official page

    Tags: api programming

    Continue Reading

    Previous: Projekt „Gaminatorium”
    Next: Smartfon Jutra

    Related Stories

    Mageege Moon104 – test niskoprofilowego mechanika
    • Sprzęt

    Mageege Moon104 – test niskoprofilowego mechanika

    11 marca 2025
    Przebranżowienie cz.4
    • Programowanie

    Przebranżowienie cz.4

    27 lutego 2025
    Smartfon Jutra
    • Sprzęt

    Smartfon Jutra

    15 lutego 2025

    Ze świata

    • Antyweb
    • Kwantowo
    • Dwóch po dwóch
    Zawsze chciałeś zapytać o coś astronautę? Tę stronę musisz znać
    Spektakularny nowy zestaw LEGO. Największy w 2026 roku
    Wielki hit sci-fi prosto z kina już online! Ogromna niespodzianka
    Budują białka jak z klocków LEGO. Potężne narzędzie w rękach badaczy
    Powinniśmy spać dłużej. Zobacz, dlaczego 8 godzin to za mało
    W iPhonie spisywało się świetnie, w Apple Watch nie ma na to miejsca. Wiemy już, dlaczego
    Erste Bank wprowadza eSIM. Koniec drogiego roamingu podczas podróży!
    Naukowcy spierają się o idealną liczbę kroków dziennie. Oto nowa liczba
    Oskarżenia pod adresem Apple i Google, mają blokować nowe systemy
    Lidl ma gratkę dla majsterkowiczów. Sprzęt Parkside na mocnych obniżkach
    Ta rzecz w jądrze Linuksa jest ostatecznością. Sytuacja jest trudna
    Zaskakująca akcja PlayStation z GTA VI w tle. Premiera coraz bliżej
    Dwie funkcje wracają do Windowsa 11. Ich brak był odczuwalny
    Jaka kara grozi za ignorowanie UOKiK? Ta firma już wie
    Turbopopularny MacBook za grosze w promocji, że aż głupio nie skorzystać
    Lidl czyści magazyny. Lidlomix nawet 900 zł taniej
    Ponad pół miliona ludzi nabrało się na smartfon Trumpa. T1 Phone może nie trafić do sprzedaży
    Gwiazda muzyki pozywa Samsunga. Twierdzi że bezprawnie wykorzystano jej wizerunek
    Apple nie ma wstydu. Na takie funkcje macOS musimy czekać cały rok?
    Ekranizacja uwielbianej serii sci-fi z potwierdzoną datą premiery na Prime Video
    Orzeczenie w sprawie En Arche v. Adam Adamczyk
    To by było na tyle, jeśli chodzi o możliwość ugody
    Ocalić od zapomnienia
    Ostatni kwant
    ALH 84001 – meteoryt, o którym mówiono nawet w Białym Domu
    HESS zarejestrował kosmiczny elektron o niespotykanej energii [Phys. Rev. Lett.]
    Matka ciemnej materii – recenzja biografii “Vera Rubin. Życie”
    Satelita, który zerwał się ze smyczy
    Wiadomość od Carla Sagana do przyszłych eksploratorów Marsa
    Ile najdłużej może trwać zaćmienie Słońca?
    Najlepsze intra i openingi w grach – Odcinek #133
    AI, Star Trek, Rycerz Siedmiu Królestw, Festiwal dem na Steam Next Fest – Odcinek #132
    Gry, filmy i seriale w 2025 i 2026 roku – Odcinek #131
    30 lat konsoli PlayStation – Odcinek #130
    Omawiamy serię The Walking Dead (gość: Stary Gracz)
    Nikt nie potrzebuje cienkich smartfonów – Odcinek #129
    To ostatni dzwonek na kolekcjonowanie gier i filmów
    Najlepsza relacja z PGA 2025 (Poznań Game Arena)
    Bumblebee wśród klawiatur. Marvo Meqa 80W – recenzja
    Pierwsze spotkanie z Omoda 7 Super Hybrid

    To może cię zainteresować:

    Mageege Moon104 – test niskoprofilowego mechanika
    • Sprzęt

    Mageege Moon104 – test niskoprofilowego mechanika

    11 marca 2025
    Przebranżowienie cz.4
    • Programowanie

    Przebranżowienie cz.4

    27 lutego 2025
    Smartfon Jutra
    • Sprzęt

    Smartfon Jutra

    15 lutego 2025
    Czym jest Swagger?
    • Programowanie

    Czym jest Swagger?

    22 lipca 2024
    • Technologie jutra
    • Sprzęt jutra
    • Aplikacje jutra
    • Programowanie
    • Księga Drogi
    • Renowacja
    • Różności
    • Archiwum
    • Autor
    Copyright © All rights reserved. | DarkNews by AF themes.