Python backend alapok¶
Ebben a részben bemutatom, hogyan fejleszthetsz Flask alapú webes alkalmazásokat, amelyek JSON formátumban válaszolnak és az URL-ben kapott azonosítók alapján dolgoznak.
JSON¶
A JSON (JavaScript Object Notation) egy adatcsere formátum, amely ember és gép által is olvasható. Ez teszi lehetővé többek között, hogy két különböző programozási nyelv közötti adatcsere könnyen megvalósítható legyen. A JSON adatokat kulcs-érték párok formájában tárolja, amelyeket vesszővel választ el. A kulcsokat és az értékeket kettősponttal választjuk el. A JSON adatokat kapcsos zárójelek között tároljuk.
Lehetőség van tömbök tárolására is:
Több ugyanolyan struktúrájú objektum tárolására is lehetőség van:
HTTP metódusok¶
Az HTTP (Hypertext Transfer Protocol) egy olyan protokoll, amely lehetővé teszi a kliens és a szerver közötti kommunikációt. Az HTTP kéréseknek többféle típusa van, amelyeket metódusoknak nevezünk. A leggyakrabban használt metódusok a következők:
Metódus | Leírás |
---|---|
GET |
Az adatok lekérdezésére használt metódus |
POST |
Az adatok küldésére használt metódus |
PUT |
Az adatok frissítésére használt metódus |
DELETE |
Az adatok törlésére használt metódus |
A fenti táblázat csak a leggyakrabban használt metódusokat tartalmazza, de létezik még több metódus is, amelyeket a HTTP specifikáció részletez.
Flask telepítése¶
Először is, telepítsük a Flask könyvtárat a következő paranccsal pip segítségével:
Megjegyzés
A pip egy csomagkezelő eszköz, amely segítségével könnyedén telepíthetünk Python csomagokat.
Probléma esetén
Ha a pip segítségével sikeresen telepítetted a Flasket, de futtatáskor a Visual Studio Code-ban No module named 'flask'
hibaüzenetet kapod, akkor valószínűleg a környezeti változók között nem szerepel a Python elérési útvonala. Ezt a problémát úgy orvosolhatod, hogy parancssorból futatod a programot: python3 backend.py
.
Alap Flask alkalmazás JSON válasszal¶
Hozzunk létre egy Flask alkalmazást, amely JSON választ ad:
backend.py | |
---|---|
Ez az alkalmazás egy egyszerű JSON választ ad a /api
útvonalon.
Próbáld ki
Indítsd el a programot, majd írd be a böngészőbe: http://127.0.0.1:5000/api
* Serving Flask app 'backend'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
* Restarting with watchdog (windowsapi)
* Debugger is active!
* Debugger PIN: 108-864-203
Egyéb HTTP metódusok kezelése¶
A fenti példában egy alapértelmezett, a böngésző által is használt GET
metódust használtunk. Ha szeretnénk más metódusokat is kezelni, akkor azt a methods
paraméterrel tehetjük meg:
backend.py | |
---|---|
Megjegyzés
Amennyiben nincs megadva a methods
paraméter, akkor az alapértelmezett metódus a GET
lesz.
Ennek teszteléséhez már speciálisabb eszközre van szükség, mint a böngésző. A Postman egy ilyen eszköz, amely segítségével különböző HTTP metódusokkal tesztelhetjük az alkalmazásunkat.
URL-ben kapott azonosítók kezelése¶
A Flask lehetővé teszi paraméterek fogadását az URL-ből, amelyek segítségével dinamikusan kezelhetjük a kéréseket.
Szám esetén:
@app.route('/api/items/<int:item_id>')
def get_item(item_id):
# Itt normál esetben adatbázisból kérdeznénk le az adatokat az item_id alapján
# A példa kedvéért egy statikus objektumot adunk vissza
item = {'id': item_id, 'name': 'Item Neve', 'description': 'Ez egy példa elem.'}
return jsonify(item)
Szöveg esetén:
@app.route('/api/users/<username>')
def show_user_profile(username):
# Itt visszaadhatjuk a felhasználó profilját JSON formátumban
item = {'user': username}
return jsonify(item)
Példa
HTTP státuszkódok¶
Az HTTP státuszkódok segítségével a szerver visszajelzést ad a kliensnek a kérés állapotáról.
A státuszkódok általában öt csoportra oszthatók:
1xx
(Információs válaszok): Ideiglenes válaszok, amelyek tájékoztatják a klienst a kérés feldolgozásának előrehaladásáról.2xx
(Sikeres válaszok): A kérés sikeresen feldolgozásra került.3xx
(Átirányítási üzenetek): További lépéseket kell tenni a kérést teljesítő erőforrás eléréséhez.4xx
(Klienshiba): A kérés hibás volt, és nem lehetett feldolgozni.5xx
(Szerverhiba): A szerver nem tudta teljesíteni egy érvényes kérést.
Leggyakrabban használt státuszkódok:
Státuszkód | Jelentés |
---|---|
200 | OK |
201 | Created |
202 | Accepted |
204 | No Content |
301 | Moved Permanently |
302 | Found (Temporary Redirect) |
304 | Not Modified |
400 | Bad Request |
401 | Unauthorized |
403 | Forbidden |
404 | Not Found |
405 | Method Not Allowed |
500 | Internal Server Error |
501 | Not Implemented |
502 | Bad Gateway |
503 | Service Unavailable |
504 | Gateway Timeout |
A Flask lehetővé teszi a státuszkódok beállítását a status
paraméter segítségével.
Példa
@app.route('/api/items/<int:item_id>')
def get_item(item_id):
# Itt normál esetben adatbázisból kérdeznénk le az adatokat az item_id alapján
# A példa kedvéért egy statikus objektumot adunk vissza
item = {'id': item_id, 'name': 'Item Neve', 'description': 'Ez egy példa elem.'}
return jsonify(item), 200
Összefoglalás
Ez az oktatóanyag bemutatta, hogyan lehet Flask alapú alkalmazásokat fejleszteni, amelyek képesek JSON válaszokat adni és URL-ben átadott azonosítókat kezelni. A Flask segítségével rugalmasan kezelhetjük a webes API kéréseket, lehetővé téve dinamikus webalkalmazások fejlesztését.
Feladatok¶
Készíts egy Flask alkalmazást, amely betölti a konyvtar.cs
fájl tartalmát, majd az alábbi végpontoknak megfelelően működik:
Végpont | Típus | Leírás |
---|---|---|
/konyvek |
GET |
Visszaadja a konyvtar.cs fájl tartalmát JSON formátumban |
/konyv/{isbn} |
GET |
Visszaadja a megadott ISBN számú könyv adatait JSON formátumban |
/konyv/{isbn} |
DELETE |
Törli a megadott számú ISBN könyvet |
Kiindulási segédlet
backend.py | |
---|---|