🔌 Š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.
🔬 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:
- GET: Daj mi podatke (npr. listu korisnika).
- POST: Kreiraj novi podatak (npr. registracija).
- PUT/PATCH: Izmjeni postojeći podatak (npr. promjena lozinke).
- DELETE: Obriši podatak.
3. Headers (Zaglavlja)
To su "meta-podaci" koji se ne vide na stranici, ali su ključni za komunikaciju.
- Content-Type: "Šaljem ti JSON podatke" (
application/json). - Authorization: "Ovo je moja lična karta" (Token).
- User-Agent: "Ja sam iPhone aplikacija".
4. Parameters (Parametri)
Postoje dva načina da pošaljete dodatne filtere:
Idio nakon upitnika
?. Koriste se za filtriranje/sortiranje./products?color=red&sort=price_asc
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 Key: Najjednostavniji tajni ključ. Npr. Ministarstvo A pošalje ključ
x-api-key: 12345abcdeMinistarstvu B kako bi pristupilo oglasnoj tabli. - Bearer Token (JWT - JSON Web Token): Najčešći moderni način. Kada se službenik
logira, u pozadini mu server izda "token" (digitalnu propusnicu koja važi npr. 1 sat). Taj token se
šalje u svakom zahtjevu:
Authorization: Bearer vaš_token. - OAuth 2.0 i OIDC (OpenID Connect): Standardi za bezbjednu delegaciju pristupa. Slično onome "Log in with Google", ali u ovom slučaju to je "Log in sa e-Građanin sistemom" koji omogućava da jedan državni portal sigurno pročita vaše podatke sa drugog portala.
🚪 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
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:
- Odaberite Metodu i URL: Stavite
GETi ukucajte npr.https://jsonplaceholder.typicode.com/posts/1(Ovo je lažni API za testiranje). - Kliknite Send: Postman će glumiti browser i poslati zahtjev.
- 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:
- Infrastruktura: Kako Browser, DNS i Server komuniciraju putem HTTP-a.
- Arhitektura: Razlika između Frontenda (ono što vidimo) i Backenda (ono što radi), te uloga Node.js-a.
- 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.