Mi az a REST?
Mi az a REST?
Mi az a REST?
A REST (Representational State Transfer) egy architektúra, nem konkrét protokoll, nem szoftver, nem varázslat.
👉 Magyarul: egy szabályrendszer arra, hogyan kommunikáljanak rendszerek egymással weben keresztül.
A REST tipikusan:
- HTTP-t használ
- URL-ekkel dolgozik
- erőforrásokat kezel
1. Alapfogalom: erőforrás (resource)
REST-ben minden egy erőforrás.
Példák:
- felhasználó
- eszköz
- VLAN
- rendelés
És ezek URL-en érhetők el:
/users
/devices
/vlans/10
Nem „parancsokat” hívsz, hanem dolgokat kezeled.
2. HTTP műveletek (a REST igazi lelke)
Nem találgatás, minden művelethez tartozik egy ige:
| Művelet | Jelentés |
|---|---|
| GET | lekérdezés |
| POST | létrehozás |
| PUT | teljes módosítás |
| PATCH | részleges módosítás |
| DELETE | törlés |
Példa:
GET /devices
→ összes eszköz lekérése
POST /devices
→ új eszköz létrehozása
3. Stateless működés (amit mindenki elront fejben)
Ez az egyik legfontosabb.
👉 A szerver nem emlékszik rád.
Minden kérésben benne kell lennie:
- ki vagy
- mit akarsz
Következmény:
- nincs „session varázslat”
- minden request önálló
Ezért van:
- token
- auth header
4. Kliens–szerver modell
- kliens → kér
- szerver → válaszol
A kettő független:
- frontend változhat
- backend változhat
Nem törik el minden, mint egy rosszul megírt Windows frissítés után.
5. Adatformátum (JSON)
REST nem kötelezően JSON, de… gyakorlatban igen.
Példa válasz:
{
"hostname": "router1",
"ip": "192.168.1.1"
}
Ez:
- könnyen olvasható
- könnyen feldolgozható
XML is lehetne… csak minek szenvedni.
6. URI felépítés (hol hibáznak a diákok)
Rosszul:
/getAllDevices
Jól:
/devices
👉 REST nem „függvényhívás”, hanem erőforrás-alapú.
7. HTTP státuszkódok (élet-halál kérdés vizsgán)
| Kód | Jelentés |
|---|---|
| 200 | OK |
| 201 | Létrehozva |
| 400 | Hibás kérés |
| 401 | Nincs jogosultság |
| 404 | Nem található |
| 500 | Szerver hiba |
Ha valaki 404-et nem ismeri, akkor az internet eddig kímélte.
8. REST előnyei
- egyszerű
- skálázható
- platformfüggetlen
- jól automatizálható
👉 ezért használják mindenhol
9. REST a hálózatokban (itt jön a lényeg neked)
Példa:
- switch API → VLAN létrehozás
- router API → route lekérdezés
Python példa:
import requests
response = requests.get("http://api.example.com/devices")
print(response.json())
Nem SSH-zol, nem pötyögsz:
👉 program beszél a hálózattal
10. REST vs. hagyományos CLI
| CLI | REST |
|---|---|
| kézi | automatizált |
| hibalehetőség nagy | kontrollált |
| lassú | gyors |
| emberi | gépi |
11. Gyakori vizsgacsapdák
❌ „REST egy protokoll”
→ Nem. Architektúra.
❌ „REST csak JSON”
→ Nem. De általában igen.
❌ „POST = lekérdezés”
→ Nem. GET a lekérdezés.
12. Egyben az egész
REST lényege:
👉 URL + HTTP művelet + adat (JSON) → művelet az erőforráson
1. REST API – mit jelent pontosan?
A REST API egy olyan alkalmazásprogramozási interfész (API), amely a REST architektúra elveit követi, és tipikusan HTTP-n keresztül kommunikál.
👉 Emberi nyelven:
egy szabványos mód arra, hogy programok weben keresztül adatokat kérjenek, módosítsanak, töröljenek.
2. Az API fogalma (mert itt csúsznak el sokan)
API = kapcsolódási felület két szoftver között
Példa:
- frontend (weboldal)
- backend (szerver)
A frontend nem „turkál” a backendben, hanem:
👉 API-n keresztül kér adatot
3. REST API alapelvek (nem dísznek vannak)
1. Erőforrás-alapú működés
Minden adat egy resource (erőforrás).
Példa:
/users
/devices
/orders/123
👉 Nem „műveleteket hívsz”, hanem dolgokat kezelsz.
2. HTTP metódusok használata
A műveletet nem a URL mondja meg, hanem a HTTP ige.
| Metódus | Jelentés |
|---|---|
| GET | lekérdezés |
| POST | létrehozás |
| PUT | teljes módosítás |
| PATCH | részleges módosítás |
| DELETE | törlés |
3. Stateless működés
Ez a kulcs.
👉 A szerver nem tárol állapotot a kliensek között.
Minden kérés tartalmaz:
- autentikációt
- adatokat
- kontextust
Következmény:
- skálázható
- egyszerűbb
- de több adatot kell küldeni
4. Egységes interfész (Uniform Interface)
Ez az, amitől REST REST lesz.
Szabályok:
- konzisztens URL-ek
- szabványos HTTP használat
- azonos működés minden resource-nál
5. Rétegezett rendszer
A kliens nem tudja, hogy:
- proxy
- load balancer
- cache
van-e közben
👉 és nem is kell tudnia
6. Cache-elhetőség
A válaszok cache-elhetők.
Példa:
- GET kérés eredménye eltárolható
- nem kell mindig szervert terhelni
4. REST API működés lépésről lépésre
Példa: eszközök lekérdezése
1. Kérés:
GET /devices HTTP/1.1
Host: api.szerver.hu
Authorization: Bearer TOKEN
2. Szerver feldolgozza
3. Válasz:
{
"devices": [
{"name": "router1", "ip": "192.168.1.1"},
{"name": "switch1", "ip": "192.168.1.2"}
]
}
5. HTTP kérés részei
1. URL
https://api.szerver.hu/devices/1
2. Method
GET / POST / stb.
3. Header
- Authorization
- Content-Type
4. Body (nem mindig van)
POST / PUT esetén
6. Adatformátumok
Leggyakoribb:
- JSON ✔️
- XML (régebbi)
JSON példa:
{
"username": "admin",
"role": "network"
}
7. Státuszkódok (ezekből él a diagnosztika)
| Kód | Jelentés |
|---|---|
| 200 | siker |
| 201 | létrehozva |
| 204 | nincs tartalom |
| 400 | hibás kérés |
| 401 | nincs hitelesítés |
| 403 | tiltott |
| 404 | nem található |
| 500 | szerverhiba |
👉 Ha valaki API-zik és nem nézi a státuszkódot, az vakon repül.
8. REST API tervezési szabályok
Jó gyakorlat:
GET /users
GET /users/1
POST /users
DELETE /users/1
Rossz:
/getUsers
/deleteUser
👉 REST nem RPC (nem függvényhívás).
9. Autentikáció
Leggyakoribb:
- API kulcs
- Bearer token
- OAuth
Példa:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
10. REST API hálózati környezetben
Na itt lesz hasznos neked.
Mire használják:
- router konfiguráció
- VLAN kezelés
- monitoring
- automatizálás
Példa:
POST /vlans
→ új VLAN létrehozása switchen
11. REST API + Python
Példa:
import requests
url = "http://api.szerver.hu/devices"
response = requests.get(url)
print(response.status_code)
print(response.json())
👉 ez a pont, ahol a rendszergazda átlép „scriptelő üzemmódba”
12. REST előnyei
- egyszerű
- jól dokumentálható
- platformfüggetlen
- automatizálható
- skálázható
13. REST hátrányai (igen, vannak)
- stateless → több adatforgalom
- nem mindig hatékony nagy adatoknál
- verziókezelés macerás
14. REST vs SOAP (vizsgakedvenc)
| REST | SOAP |
|---|---|
| könnyű | nehéz |
| JSON | XML |
| gyors | lassabb |
| modern | régi enterprise |
