Naučte se, jak vytvořit RESTful API pomocí Flask a Postgres, což umožňuje bezproblémovou výměnu dat mezi vaší aplikací a externími systémy.

Rozhraní API (Application Programming Interfaces) jsou kritickou součástí budování a propojování různých systémů a umožňují vašim aplikacím komunikovat a vyměňovat si data s jinými službami.

Zatímco vývoj backendu zahrnuje více než jen psaní API – pokrývá také psaní obchodní logiky na straně serveru a navrhování efektivního systému architektury a další klíčové funkce, čtěte dále a zjistěte, jak vytvořit jednoduché CRUD REST API pomocí Flask (odlehčený framework Python) a Postgres databáze.

Použití Flask k sestavení backendových API

Baňka je lehká Rámec Pythonu který poskytuje řadu funkcí pro zjednodušení psaní backendových API pro webové klienty napsané pomocí různých technologií, jako je React a Angular.

Zdrojový kód tohoto projektu najdete zde úložiště GitHub.

Tento průvodce vás provede psaním a REST API, které implementuje čtyři operace CRUD: vytvářet, číst, aktualizovat a mazat pro správu uživatelských dat uložených v databázi Postgres.

instagram viewer

Nastavte databázi Postgres

Chcete-li začít, přejděte na ElephantSQL, cloudové řešení pro hostování databází, které poskytuje platformu pro vytváření a správu databází Postgres v cloudu, registraci a přihlášení na stránku přehledu vašeho účtu.

Klikněte na Vytvořit novou instanci pro vytvoření nové instance pro vaši aplikaci.

Zadejte název své instance a vyberte bezplatný plán a nakonec vyberte oblast, kde bude instance hostována, abyste dokončili proces nastavení.

Jakmile je instance vytvořena, přejděte na stránku nastavení a zkopírujte ji URL databáze, použijete jej k navázání spojení s databází.

Nastavte Flask Server

Na svém terminálu vytvořte složku projektu a změňte aktuální adresář na novou složku.

Před instalací Flask se ujistěte, že na svém počítači používáte Python verze 3.6+. Pokud ne, musíte nainstalovat nejnovější Krajta verze.

python --verze

Poté nainstalujte virtualenvk vytvoření izolovaného virtuálního vývojového prostředí.

pip install virtualenv

Dále spusťte níže uvedený příkaz a vytvořte virtuální prostředí.

virtualenv venv

Nakonec aktivujte virtuální prostředí.

# V systému Windows: 
.\venv\Scripts\activate
# V systému Unix nebo MacOS:
zdroj venv/bin/activate

Nainstalujte požadované balíčky

V kořenovém adresáři složky projektu vytvořte a požadavky.txt soubor a přidejte tyto balíčky.

baňka
python-dotenv
psycopg2-binární

Dále nainstalujte balíčky.

pip install -r požadavky.txt

The psycopg2-binární je knihovna Pythonu, která funguje jako middleware, který vám umožní navázat spojení s vaší Postgres databází a provádět různé databázové operace.

Nakonec vytvořte a .env soubor a vložte adresu URL databáze.

DATABASE_URL= URL vaší databáze

Vytvořte Flask Server

Nakonec vytvořte app.py soubor v kořenovém adresáři a přidejte kód níže.

import os 
import psycopg2
z dotenv import load_dotenv
z baňka import Baňka, žádost, jsonify

load_dotenv()

app = Flask (__name__)
url = os.getenv("DATABASE_URL")
připojení = psycopg2.connect (url)

@app.get("/")
defDomov():
vrátit se"Ahoj světe"

Tento kód nastaví instanci aplikace Flask. Poté vytvoří připojení k databázi zadané v řetězci URL a nakonec nastaví domovskou cestu, která vrátí řetězec jako odpověď.

Vytvořte rozhraní REST API umožňující operace CRUD

Nyní vytvořte REST API, které implementuje čtyři operace CRUD.

Vytvořte ukázkovou tabulku

Vytvořte tabulku uživatelů v databázi.

Do souboru app.py přidejte níže uvedený kód.

CREATE_USERS_TABLE = "VYTVOŘIT TABULKU, POKUD NEEXISTUJE uživatelé (id SERIAL PRIMARY KEY, název TEXT);"

s spojení:
s connection.cursor() tak jako kurzor:
kurzor.execute (CREATE_USERS_TABLE)

  • Tento kód vytvoří novou tabulku PostgreSQL s názvem uživatelů se dvěma sloupci.
  • Používá metodu připojení psycopg2 k navázání spojení s databází a vytvoří nový objekt kurzoru pomocí připojení.kurzor metoda, která se používá k provedení SQL dotazy.

1. Definujte metodu POST

Vytvořte trasu příspěvku pro přidání dat.

INSERT_USER_RETURN_ID = "INSERT INTO users (name) VALUES (%s) RETURNING id;"
@app.route("/api/user", methods=["POST"])
defvytvořit uživatele():
data = request.get_json()
jméno = data["název"]
s spojení:
s connection.cursor() tak jako kurzor:
kurzor.execute (INSERT_USER_RETURN_ID, (název,))
user_id = kurzor.fetchone()[0]
vrátit se {"id": uživatelské ID, "název": název, "zpráva": f" Uživatel {název} vytvořen."}, 201
  • Řetězec dotazu SQL definuje příkaz SQL, který bude proveden pomocí kurzor.provést metoda pro vložení nového řádku se jménem uživatele do uživatelé tabulky v databázi. Vrátí nově vytvořené ID uživatele.
  • The vytvořit uživatele funkce přijímá jméno jako parametr pro uložení do databáze, zatímco kurzor.načítání je volána metoda k načtení nově vytvořeného ID uživatele. Nakonec je vrácen slovník obsahující ID a jméno nově vytvořeného uživatele spolu se zprávou, že uživatel byl úspěšně vytvořen.

2. Definujte metodu GET

Definujte dvě cesty získávání: jednu pro načtení všech dat v databázi a dvě pro načtení konkrétních dat z databáze na základě ID.

SELECT_ALL_USERS = "SELECT * FROM users;"

@app.route("/api/user", metody=["GET"])
defget_all_users():
s spojení:
s connection.cursor() tak jako kurzor:
kurzor.execute (SELECT_ALL_USERS)
users = kurzor.fetchall()
-li uživatelé:
výsledek = []
pro uživatel v uživatelé:
result.append({"id": uživatel[0], "název": uživatel[1]})
vrátit se jsonify (výsledek)
jiný:
vrátit se jsonify({"chyba": f"Uživatelé nebyli nalezeni."}), 404

@app.route("/api/user/", metody="["GET"])
defget_user(uživatelské ID):
s spojení:
s connection.cursor() tak jako kurzor:
kurzor.execute("SELECT * FROM users WHERE id = %s", (uživatelské ID,))
uživatel = kurzor.fetchone()
-li uživatel:
vrátit se jsonify({"id": uživatel[0], "název": uživatel[1]})
jiný:
vrátit se jsonify({"chyba": f"Uživatel s ID {uživatelské ID} nenalezeno."}), 404

  • Tato první trasa API zpracovává požadavky HTTP GET pro načtení všech uživatelů z databáze. Načte všechny uživatele z databáze a vrátí výsledky ve formátu JSON v odpovědi.
  • Tato druhá trasa API zpracovává požadavky HTTP GET pro načítání dat pro konkrétního uživatele z databáze. To trvá v uživatelské ID jako parametr načte data uživatele z databáze a vrátí výsledky ve formátu JSON v odpovědi.

3. Definujte metodu PUT

Vytvořte put route pro aktualizaci uložených dat v databázi.

@app.route("/api/user/", metody=["PUT"])
defupdate_user(uživatelské ID):
data = request.get_json()
jméno = data["název"]
s spojení:
s connection.cursor() tak jako kurzor:
kurzor.execute (UPDATE_USER_BY_ID, (jméno, user_id))
-li kurzor.počet řádků == 0:
vrátit se jsonify({"chyba": f"Uživatel s ID {uživatelské ID} nenalezeno."}), 404
vrátit se jsonify({"id": uživatelské ID, "název": název, "zpráva": f"Uživatel s ID {uživatelské ID} aktualizováno."})
  • The update_user funkce bere parametr ID uživatele jako vstup a používá jej k aktualizaci jména zadaného uživatele v databázi.
  • Pokud je operace aktualizace úspěšná, vrátí objekt JSON s aktualizovaným ID uživatele, jménem a zprávou o úspěchu v odpovědi.

4. Definujte metodu DELETE

Implementujte cestu mazání k odstranění uložených dat konkrétního uživatele v databázi.

@app.route("/api/user/", metody="["DELETE"])
defdelete_user(uživatelské ID):
s spojení:
s connection.cursor() tak jako kurzor:
kurzor.execute (DELETE_USER_BY_ID, (id_uživatele,))
-li kurzor.počet řádků == 0:
vrátit se jsonify({"chyba": f"Uživatel s ID {uživatelské ID} nenalezeno."}), 404
vrátit se jsonify({"zpráva": f"Uživatel s ID {uživatelské ID} smazáno."})
  • Tato trasa API zpracovává funkci odstranění konkrétního uživatele z databáze na základě jeho ID. Pokud uživatel není nalezen, vrátí stavový kód 404 s chybovou zprávou. Pokud je však operace odstranění úspěšná, vrátí objekt JSON se zprávou o úspěchu v odpovědi.

Zápis REST API pomocí baňky

Tato příručka ukazuje, jak používat Flask a Postgres k vytvoření jednoduchého CRUD REST API a jak k navázání připojení k databázi a provádění různých SQL dotazů pro čtení a zápis dat do a databáze. Nyní můžete vytvořit jednoduché REST API, které zvládne čtyři operace CRUD požadované v jakékoli webové aplikaci.

Ať už vytváříte jednoduchý blog nebo složitou webovou aplikaci, Flask a Postgres nabízejí výkonné funkce a možnosti potřebné k vytvoření robustního backendového systému. Alternativně můžete k vytváření RESTful API využít jiné technologie, jako je FastAPI a MongoDB.