Šta je API i kako se razmenjuju podaci (JSON)
API (Application Programming Interface) je dogovor o tome kako jedan program traži podatke ili usluge od drugog. Na webu je to skup adresa na serveru koje umesto HTML stranica vraćaju podatke, najčešće u formatu JSON. Preko API-ja rade mobilne aplikacije, vremenske prognoze, mape i plaćanja.
Kako da učiš: svaki primer isprobaj u pregledaču ili komandnoj liniji i uradi vežbe iz lekcije. Primeri su u HTML-u, JavaScript-u i Python-u; za većinu je dovoljan pregledač, a za Python primere instaliran Python 3.
API: konobar između frontenda i backenda
U restoranu ne ulaziš u kuhinju – narudžbinu predaješ konobaru prema jelovniku. API je takav jelovnik: piše koje adrese postoje, šta im se šalje i šta vraćaju.
| Zahtev | Značenje | Odgovor |
|---|---|---|
GET /api/zadaci | daj sve zadatke | lista zadataka (JSON) |
GET /api/zadaci/17 | daj zadatak broj 17 | jedan zadatak ili 404 |
POST /api/zadaci | napravi novi zadatak (podaci u telu) | 201 Created + novi zadatak |
PUT /api/zadaci/17 | izmeni zadatak 17 | 200 OK |
DELETE /api/zadaci/17 | obriši zadatak 17 | 204 No Content |
Ovakav stil – adrese su „stvari“ (resursi), a HTTP metode su „radnje“ – zove se REST. Isti backend tako služi i sajtu i mobilnoj aplikaciji.
JSON: format podataka
JSON (JavaScript Object Notation) je tekstualni zapis podataka koji lako čitaju i ljudi i programi:
{
"ime": "Ana",
"razred": 7,
"takmicar": true,
"rezultati": [100, 85, 92],
"skola": { "naziv": "OŠ Vuk Karadžić", "grad": "Pančevo" }
}
| Element | Zapis | U Python-u | U JavaScript-u |
|---|---|---|---|
| objekat | { "ključ": vrednost } | rečnik (dict) | objekat |
| niz | [1, 2, 3] | lista | niz (Array) |
| tekst | "Ana" (obavezno dvostruki navodnici) | str | string |
| broj, logička vrednost, prazno | 7, true, null | int/float, True, None | number, true, null |
Pozivanje API-ja iz JavaScript-a
U pregledaču se API poziva funkcijom fetch. Primer koristi besplatan API za vremensku prognozu Open-Meteo (bez registracije):
<p>Temperatura u Pančevu: <span id="temp">…</span> °C</p>
<script>
const url = "https://api.open-meteo.com/v1/forecast?latitude=44.87&longitude=20.64¤t=temperature_2m";
fetch(url) // pošalji GET zahtev
.then(odgovor => odgovor.json()) // pretvori JSON tekst u objekat
.then(podaci => {
document.getElementById("temp").textContent = podaci.current.temperature_2m;
})
.catch(greska => console.log("Greška:", greska)); // npr. nema interneta
</script>
Otvori F12 → Network → filter Fetch/XHR: videćeš zahtev ka API-ju i JSON odgovor u tabu Response.
Pozivanje API-ja iz Python-a
U Python-u se JSON pretvara u rečnik modulom json, a zahtevi se najčešće šalju bibliotekom requests:
import json
tekst = '{"ime": "Ana", "razred": 7, "rezultati": [100, 85, 92]}'
ucenik = json.loads(tekst) # JSON tekst -> rečnik
print(ucenik["ime"], ucenik["razred"])
print("prosek:", sum(ucenik["rezultati"]) / len(ucenik["rezultati"]))
ucenik["razred"] = 8
print(json.dumps(ucenik, ensure_ascii=False)) # rečnik -> JSON tekst
import requests # instalacija: pip install requests
url = "https://api.open-meteo.com/v1/forecast"
parametri = {"latitude": 44.87, "longitude": 20.64, "current": "temperature_2m"}
odgovor = requests.get(url, params=parametri, timeout=10)
print(odgovor.status_code) # 200 ako je sve u redu
podaci = odgovor.json() # JSON -> rečnik
print(podaci["current"]["temperature_2m"], "°C")
API ključevi i ograničenja
- Mnogi API-ji traže ključ (API key) – tajni niz znakova po kome znaju ko ih poziva. Ključ se ne objavljuje u kodu na GitHub-u i ne stavlja u frontend.
- Postoje ograničenja (npr. 1000 zahteva dnevno); posle toga server vraća
429 Too Many Requests. - Pregledač ne dozvoljava da stranica sa jednog domena slobodno čita podatke sa drugog, osim ako taj server to izričito dozvoli (pravilo CORS). Zato neki API-ji rade iz Python-a, a iz pregledača ne.
- U JSON-u ključevi i tekst moraju biti pod dvostrukim navodnicima, a poslednji element ne sme imati zarez iza sebe.
- Uvek proveri status odgovora (200, 404, 429…) pre čitanja podataka.
- API ključ je kao lozinka – ne deli ga i ne stavljaj u JavaScript na stranici.
Proveri znanje
Otvori kviz
API i JSON
1. Šta vraća tipičan web API?
2. Koja metoda u REST API-ju pravi novi zapis?
3. Koja Python funkcija pretvara JSON tekst u rečnik?
Web programiranje → Uvod u web → API
Šta je API i kako frontend komunicira sa backendom
Web početna:
Povratak na vodič stranu |
Sledeća lekcija: Python backend uvod
Uvod
U prethodnim lekcijama naučio si kako browser i server komuniciraju pomoću HTTP-a.
Sada idemo korak dalje — kako frontend zapravo "priča" sa backendom u modernim aplikacijama.
Da razumeš šta je API i kako se koristi za razmenu podataka između delova aplikacije.
Šta je API?
API (Application Programming Interface) je način komunikacije između dva programa.
U web aplikacijama API povezuje:
- frontend (ono što korisnik vidi)
- backend (logika i podaci)
Jednostavno rečeno:
- frontend šalje zahtev preko API-ja
- backend vraća podatke
API je "posrednik" između frontenda i backenda.
Primer iz stvarnog života
Zamisli restoran:
- ti si korisnik (frontend)
- kuhinja je backend
- konobar je API
Ne ideš direktno u kuhinju — već naručuješ preko konobara.
API radi isto:
- prima zahtev
- prosleđuje backendu
- vraća odgovor
Kako API funkcioniše?
Kada korisnik klikne dugme ili pošalje formu:
- frontend šalje HTTP request API-ju
- API poziva backend logiku
- backend vraća podatke
- API vraća odgovor frontend-u
Primer
GET /api/users
Server može vratiti:
[
{ "ime": "Marko" },
{ "ime": "Ana" }
]
Frontend zatim prikazuje te podatke na stranici.
Većina modernih aplikacija (Instagram, YouTube, mobilne aplikacije) koristi API za komunikaciju sa serverom.
Šta je REST API?
Najčešći tip web API-ja je REST API.
On koristi HTTP metode:
- GET — uzmi podatke
- POST — pošalji podatke
- PUT — izmeni podatke
- DELETE — obriši podatke
Mini eksperiment
1. Otvori neki sajt (npr. YouTube) 2. Desni klik → Inspect 3. Otvori "Network" tab 4. Filtriraj po "Fetch/XHR"
Posmatraj:
- API zahteve
- URL koji sadrže /api/
- podatke koje server vraća
Izazov
Odgovori:
- Šta je API?
- Koja je njegova uloga?
- Kako frontend koristi API?
Zašto je API važan?
Bez API-ja moderne aplikacije ne bi mogle da funkcionišu.
API omogućava:
- komunikaciju između sistema
- razdvajanje frontend i backend dela
- razvoj mobilnih i web aplikacija
Povezane lekcije
Šta sledi?
- kako Python radi na serveru
- kako napraviti prvi backend
- kako API povezati sa Django aplikacijom
