MODUL 1 - LEKCIJA 3

Šta je API? SOAP vs REST

Komunikacija između softvera: Uvod u API intefejse i moderne protokole razmjene podataka.

⏱️ Trajanje: ~45 min 📚 Nivo: Početni 🎯 Koncepti: API, JSON, XML, REST

🔌 Šta je API? (Dubinsko razumijevanje)

API (Application Programming Interface) nije samo "konekcija". To je ugovor. Kada programer napiše API, on obećava: "Ako mi pošalješ OVAKVE podatke, ja ću ti vratiti ONAKVE podatke".

Danas, API je proizvod. Kompanije poput Stripea, Twilia ili Google Mapsa zarađuju milijarde prodavajući pristup svojim API-jima.

💡 Analogija sa Konobarom

Zamislite da ste u restoranu. Vi (Klijent) sjedite za stolom, a hrana se priprema u kuhinji (Server/System). Vi ne možete ući u kuhinju i sami spremiti hranu.
Konobar je API.
Vi kažete konobaru šta želite (Request), on odnese narudžbu u kuhinju, i donese vam hranu (Response). Vi ne morate znati kako peć radi, samo trebate znati naručiti.

API Waiter Analogy

🔬 Anatomija HTTP Zahtjeva

Da biste profesionalno radili sa API-jima, morate razumjeti od čega se sastoji jedan zahtjev. Nije dovoljno samo ukucati URL.

1. Endpoint (Adresa)

To je URL na koji šaljete zahtjev. Sastoji se od Base URL-a i Path-a.

https://api.instagram.com/v1/users/self

2. Metoda (Glagol)

Govori serveru šta želimo uraditi:

3. Headers (Zaglavlja)

To su "meta-podaci" koji se ne vide na stranici, ali su ključni za komunikaciju.

4. Parameters (Parametri)

Postoje dva načina da pošaljete dodatne filtere:

Query Parameters
Idio nakon upitnika ?. Koriste se za filtriranje/sortiranje.
/products?color=red&sort=price_asc
Path Parameters
Dio su same adrese. Identifikuju konkretan resurs.
/products/1052 (Daj mi proizvod ID 1052)

5. Body / Payload (Tijelo)

Kada šaljete podatke (POST/PUT), oni idu u tijelu zahtjeva. Danas je standard JSON format.

{
  "username": "superuser",
  "email": "[email protected]",
  "age": 25
}

🔐 API Autentikacija i Sigurnost između Ministarstava

U javnoj upravi, API-ji nikada nisu u potpunosti javni za mijenjanje podataka bez provjere. Morate strogo dokazati ne samo ko ste (Autentikacija), već i šta smijete raditi (Autorizacija).

🚪 API Gateway (Zaštitni Zid)

Kada desetine različitih institucija (MUP, Porezna, Opštine) trebaju međusobno komunicirati putem API-ja (G2G - Government to Government), one obično ne šalju zahtjeve direktno jedna drugoj.

Koristi se napredni centralni sistem zvan API Gateway. Svi zahtjevi idu kroz ovu "telefonsku centralinu" koja vrši provjeru: Da li je token validan? Da li je poslanik zahtjeva poslao previše upita u minuti (Rate Limiting)? Na ovaj način, pojedinačne baze podataka raznih ministarstava su skrivene i potpuno zaštićene unutar državnog Intraneta.

⚔️ SOAP vs REST u Državnom Sektoru

SOAP XML vs REST JSON

Grafički prikaz razlike u strukturi paketa (Koverta vs Dokument)

Zašto državne institucije još uvijek koriste SOAP?

Dok su privatne firme skoro u potpunosti prešle na REST, mnogi centralni registri u upravi (nastali 2005-2015) još uvijek koriste SOAP. Razlog tome je sigurnost i rigidnost. SOAP posjeduje ugrađene standarde (WS-Security) za kriptovanje pojedinačnih elemenata u XML-u i strogo definisane ugovore (WSDL) koji sprječavaju bilo kakve greške u komunikaciji i garantiraju neporičivost transakcija.

Ipak, REST (JSON) je apsolutni standard za sve nove projekte e-Uprave jer je neuporedivo brži, lakši za programiranje i troši znatno manje internet saobraćaja (što je ključno za mobilne aplikacije građana).

Pogledajte razliku u količini koda za upit "Daj mi status predmeta broj 101":

SOAP (Stari Centralni Registar)

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <Security><Token>123</Token></Security>
  </soap:Header>
  <soap:Body>
    <GetStatusPredmeta>
      <BrojPredmeta>101</BrojPredmeta>
    </GetStatusPredmeta>
  </soap:Body>
</soap:Envelope>

REST (Novi e-Uprava API)

{
  "brojPredmeta": 101,
  "zahtjev": "status"
}

🛠️ Praktični rad: Postman

Vi nećete uvijek pisati kod da testirate API. Koristit ćete alate poput Postman-a.

Kako testirati API u 3 koraka:

  1. Odaberite Metodu i URL: Stavite GET i ukucajte npr. https://jsonplaceholder.typicode.com/posts/1 (Ovo je lažni API za testiranje).
  2. Kliknite Send: Postman će glumiti browser i poslati zahtjev.
  3. Pregledajte Response: Dobit ćete JSON odgovor i Status Code (npr. 200 OK).

Ako radite POST zahtjev, morat ćete otići na "Body" tab, odabrati "raw" i "JSON", te tu upisati podatke koje šaljete.

✅ Zaključak Modula

Kroz ova tri dijela "Fundamentals" tutoriala pokrili smo ključne osnove moderne web arhitekture:

  1. Infrastruktura: Kako Browser, DNS i Server komuniciraju putem HTTP-a.
  2. Arhitektura: Razlika između Frontenda (ono što vidimo) i Backenda (ono što radi), te uloga Node.js-a.
  3. Komunikacija: Kako različiti sistemi razmjenjuju podatke koristeći API-je (REST/JSON vs SOAP/XML).

Ovo znanje je temelj za dalje učenje SQL-a, MVC-a ili AI integracija koje nudimo u drugim kursevima.