Ismerje meg, hogyan hozhat létre RESTful API-t a Flask és Postgres használatával, lehetővé téve az alkalmazás és a külső rendszerek közötti zökkenőmentes adatcserét.

Az alkalmazásprogramozási felületek (API-k) a különböző rendszerek felépítésének és összekapcsolásának kritikus részét képezik, lehetővé téve az alkalmazások kommunikációját és adatcseréjét más szolgáltatásokkal.

Míg a háttérfejlesztés nem csupán API-k írását foglalja magában, hanem a szerveroldali üzleti logika írását és a hatékony rendszer tervezését is magában foglalja. architektúrákat és más kulcsfontosságú funkciókat, olvassa el, és tanulja meg, hogyan hozhat létre egyszerű CRUD REST API-t a Flask (egy könnyű Python keretrendszer) és a Postgres segítségével. adatbázis.

Flask használata háttér API-k létrehozásához

Lombik egy könnyűsúlyú Python keretrendszer amely számos funkciót biztosít a háttér API-k írásának leegyszerűsítésére olyan webes ügyfelek számára, amelyek különböző technológiákkal, például a React és az Angular használatával készültek.

instagram viewer

A projekt forráskódja itt található GitHub adattár.

Ez az útmutató végigvezeti Önt az a REST API, amely megvalósítja a négy CRUD műveletet: létrehozás, olvasás, frissítés és törlés a Postgres adatbázisban tárolt felhasználói adatok kezeléséhez.

Hozzon létre egy Postgres adatbázist

A kezdéshez menjen a következőhöz ElephantSQL, egy felhő alapú adatbázis-tárhely megoldás, amely platformot biztosít Postgres adatbázisok felhőben történő létrehozásához és kezeléséhez, regisztrációhoz és fiókja áttekintő oldalára való bejelentkezéshez.

Kattints a Új példány létrehozása gombot az alkalmazás új példányának létrehozásához.

Adja meg a példány nevét, és válassza ki az ingyenes csomagot, végül pedig válassza ki a régiót, ahol a példányt tárolni fogja a telepítési folyamat befejezéséhez.

A példány létrehozása után lépjen a beállítások oldalra, és másolja ki a adatbázis URL, akkor ezzel kapcsolatot létesíthet az adatbázissal.

Állítson be egy lombikszervert

A terminálon hozzon létre egy projektmappát, és módosítsa az aktuális könyvtárat erre az új mappára.

A Flask telepítése előtt győződjön meg arról, hogy a Python 3.6+ verziója fut a gépén. Ha nem, telepítenie kell a legújabbat Piton változat.

python --verzió

Ezt követően telepítse virtualenv, egy elszigetelt virtuális fejlesztői környezet létrehozásához.

pip install virtualenv

Ezután futtassa az alábbi parancsot egy virtuális környezet létrehozásához.

virtualenv venv

Végül aktiválja a virtuális környezetet.

# Windows rendszeren: 
.\venv\Scripts\activate
# Unix vagy MacOS rendszeren:
forrás venv/bin/activate

Telepítse a szükséges csomagokat

A projektmappa gyökérkönyvtárában hozzon létre a követelmények.txt fájlt, és adja hozzá ezeket a csomagokat.

lombik
python-dotenv
psycopg2-bináris

Ezután telepítse a csomagokat.

pip install -r követelmények.txt

A psycopg2-bináris egy Python könyvtár, amely köztes szoftverként működik, lehetővé téve a Postgres adatbázissal való kapcsolatok létrehozását és különféle adatbázis-műveletek végrehajtását.

Végül hozzon létre a .env fájlt, és illessze be az adatbázis URL-címét.

DATABASE_URL= az adatbázis URL-je

Hozd létre a Flask Servert

Végül hozzon létre egy app.py fájlt a gyökérkönyvtárba, és adja hozzá az alábbi kódot.

import os 
import pszichopg2
tól től dotenv import load_dotenv
tól től lombik import Lombik, kérés, jsonify

load_dotenv()

app = Lombik (__name__)
url = os.getenv("DATABASE_URL")
kapcsolat = psycopg2.connect (url)

@app.get("/")
defitthon():
Visszatérés"Helló Világ"

Ez a kód beállítja a Flask alkalmazás egy példányát. Ezután kapcsolatot hoz létre az URL-karakterláncban megadott adatbázissal, és végül beállít egy otthoni útvonalat, amely válaszként egy karakterláncot ad vissza.

Hozza létre a REST API-t, amely lehetővé teszi a CRUD műveleteket

Most készítse el a REST API-t, amely megvalósítja a négy CRUD műveletet.

Hozzon létre egy bemutató táblázatot

Hozzon létre egy felhasználói táblát az adatbázisban.

Adja hozzá az alábbi kódot az app.py fájlhoz.

CREATE_USERS_TABLE = "HEZ TÁBLÁZAT, HA NINCS felhasználók (azonosító SOROZAT ELSŐDLEGES KULCS, név SZÖVEG);"

val vel kapcsolat:
val vel connect.cursor() mint kurzor:
cursor.execute (CREATE_USERS_TABLE)

  • Ez a kód létrehoz egy új PostgreSQL táblát, melynek neve felhasználókat két oszloppal.
  • A psycopg2 kapcsolódási módszert használja az adatbázissal való kapcsolat létrehozásához, és egy új kurzor objektumot hoz létre a kapcsolat.kurzor végrehajtásához használt módszer SQL lekérdezések.

1. Határozza meg a POST módszert

Hozza létre a bejegyzés útvonalát az adatok hozzáadásához.

INSERT_USER_RETURN_ID = "INSERT INTO user (név) ÉRTÉKEK (%s) RETURNING id;"
@app.route("/api/user", method=["POST"])
deffelhasználó létrehozása():
adatok = request.get_json()
név = adat["név"]
val vel kapcsolat:
val vel connect.cursor() mint kurzor:
cursor.execute (INSERT_USER_RETURN_ID, (név,))
user_id = cursor.fetchone()[0]
Visszatérés {"azonosító": Felhasználói azonosító, "név": név, "üzenet": f"Felhasználó {név} létre."}, 201
  • Az SQL lekérdezési karakterlánc egy SQL utasítást határoz meg, amely a következővel lesz végrehajtva kurzor.végrehajtás módszerrel beszúrhat egy új sort egy felhasználó nevével a felhasználók táblázat az adatbázisban. Visszaadja az újonnan létrehozott felhasználói azonosítót.
  • A felhasználó létrehozása függvény egy nevet vesz fel paraméterként, amelyet az adatbázisban tárol, miközben a kurzor.fetchone metódus hívja meg az újonnan létrehozott felhasználói azonosítót. Végül egy szótár, amely tartalmazza az újonnan létrehozott felhasználó azonosítóját és nevét, valamint egy üzenetet, amely jelzi a felhasználó sikeres létrehozását.

2. Határozza meg a GET módszert

Határozzon meg két lekérési útvonalat: az egyiket az adatbázisban lévő összes adat lekéréséhez, a kettőt pedig az azonosító alapján meghatározott adatok lekéréséhez az adatbázisból.

SELECT_ALL_USERS = "SELECT * FROM felhasználók;"

@app.route("/api/user", method=["GET"])
defget_all_users():
val vel kapcsolat:
val vel connect.cursor() mint kurzor:
cursor.execute (SELECT_ALL_USERS)
userek = cursor.fetchall()
ha felhasználók:
eredmény = []
számára felhasználó ban ben felhasználók:
result.append({"azonosító": user[0], "név": user[1]})
Visszatérés jsonify (eredmény)
más:
Visszatérés jsonify({"hiba": f"A felhasználók nem találhatók."}), 404

@app.route("/api/user/", method=["GET"])
defget_user(Felhasználói azonosító):
val vel kapcsolat:
val vel connect.cursor() mint kurzor:
cursor.execute("SELECT * FROM felhasználók WHERE id = %s", (Felhasználói azonosító,))
user = cursor.fetchone()
ha felhasználó:
Visszatérés jsonify({"azonosító": user[0], "név": user[1]})
más:
Visszatérés jsonify({"hiba": f"Felhasználó azonosítóval {Felhasználói azonosító} nem található."}), 404

  • Ez az első API-útvonal kezeli a HTTP GET kéréseket az összes felhasználó lekéréséhez az adatbázisból. Az összes felhasználót lekéri az adatbázisból, és az eredményeket JSON formátumban adja vissza a válaszban.
  • Ez a második API-útvonal kezeli a HTTP GET kéréseket egy adott felhasználó adatainak lekéréséhez az adatbázisból. Beveszi a Felhasználói azonosító paraméterként lekéri a felhasználó adatait az adatbázisból, és az eredményeket JSON formátumban adja vissza a válaszban.

3. Határozza meg a PUT módszert

Hozzon létre egy put útvonalat az adatbázisban tárolt adatok frissítéséhez.

@app.route("/api/user/", Metódusok=["PUT"])
defupdate_user(Felhasználói azonosító):
adatok = request.get_json()
név = adat["név"]
val vel kapcsolat:
val vel connect.cursor() mint kurzor:
cursor.execute (UPDATE_USER_BY_ID, (név, user_id))
ha kurzor.sorszám == 0:
Visszatérés jsonify({"hiba": f"Felhasználó azonosítóval {Felhasználói azonosító} nem található."}), 404
Visszatérés jsonify({"azonosító": Felhasználói azonosító, "név": név, "üzenet": f"Felhasználó azonosítóval {Felhasználói azonosító} frissítve."})
  • A update_user A függvény a felhasználói azonosító paramétert veszi be bemenetként, és ezzel frissíti a megadott felhasználó nevét az adatbázisban.
  • Ha a frissítési művelet sikeres, akkor a válaszban egy JSON-objektumot ad vissza a frissített felhasználói azonosítóval, névvel és egy sikerüzenettel.

4. Határozza meg a TÖRLÉS módszert

Valósítsa meg a törlési útvonalat egy adott felhasználó tárolt adatainak törléséhez az adatbázisban.

@app.route("/api/user/", method=["TÖRLÉS"])
defdelete_user(Felhasználói azonosító):
val vel kapcsolat:
val vel connect.cursor() mint kurzor:
cursor.execute (DELETE_USER_BY_ID, (user_id,))
ha kurzor.sorszám == 0:
Visszatérés jsonify({"hiba": f"Felhasználó azonosítóval {Felhasználói azonosító} nem található."}), 404
Visszatérés jsonify({"üzenet": f"Felhasználó azonosítóval {Felhasználói azonosító} törölve."})
  • Ez az API-útvonal kezeli egy adott felhasználó törlési funkcióját az adatbázisból az azonosítójuk alapján. Ha a felhasználó nem található, 404-es állapotkódot ad vissza hibaüzenettel. Ha azonban a törlési művelet sikeres, akkor egy JSON-objektumot ad vissza sikerüzenettel a válaszban.

REST API-k írása Flask segítségével

Ez az útmutató bemutatja, hogyan használható a Flask és a Postgres egy egyszerű CRUD REST API létrehozásához, és hogyan adatbázis-kapcsolat létrehozásához és különböző SQL lekérdezések végrehajtásához adatok olvasásához és írásához a adatbázis. Most létrehozhat egy egyszerű REST API-t, amely képes kezelni a négy CRUD-műveletet, amelyek bármely webalkalmazásban szükségesek.

Akár egyszerű blogot, akár összetett webalkalmazást épít, a Flask és a Postgres hatékony funkciókat és képességeket kínál egy robusztus háttérrendszer létrehozásához. Alternatív megoldásként más technológiákat is használhat, például a FastAPI-t és a MongoDB-t a RESTful API-k létrehozásához.