Zistite, ako vytvoriť RESTful API pomocou Flask a Postgres, čo umožňuje bezproblémovú výmenu údajov medzi vašou aplikáciou a externými systémami.

Aplikačné programové rozhrania (API) sú kritickou súčasťou budovania a spájania rôznych systémov, ktoré umožňujú vašim aplikáciám komunikovať a vymieňať si údaje s inými službami.

Zatiaľ čo vývoj backendu zahŕňa viac než len písanie API – pokrýva aj písanie obchodnej logiky na strane servera, návrh efektívneho systému architektúry a ďalšie kľúčové funkcie, čítajte ďalej a dozviete sa, ako vytvoriť jednoduché CRUD REST API s Flask (odľahčený framework Python) a Postgres databázy.

Použitie Flasku na zostavenie backendových API

Banka je ľahký Rámec Pythonu ktorý poskytuje množstvo funkcií na zjednodušenie písania backendových API pre webových klientov napísaných pomocou rôznych technológií, ako sú React a Angular.

Zdrojový kód tohto projektu nájdete tu úložisko GitHub.

Táto príručka vás prevedie písaním a REST API, ktoré implementuje štyri operácie CRUD

instagram viewer
: vytvárať, čítať, aktualizovať a mazať na správu používateľských údajov uložených v databáze Postgres.

Nastavte databázu Postgres

Ak chcete začať, prejdite na ElephantSQL, cloudové riešenie hostenia databáz, ktoré poskytuje platformu na vytváranie a správu databáz Postgres v cloude, registráciu a prihlásenie na stránku prehľadu vášho účtu.

Kliknite na Vytvoriť novú inštanciu vytvorte novú inštanciu pre vašu aplikáciu.

Zadajte názov svojej inštancie a vyberte bezplatný plán a nakoniec vyberte oblasť, v ktorej bude inštancia hosťovaná, aby ste dokončili proces nastavenia.

Po vytvorení inštancie prejdite na stránku nastavení a skopírujte súbor URL databázy, použijete ho na vytvorenie spojenia s databázou.

Nastavte Flask Server

Na svojom termináli vytvorte priečinok projektu a zmeňte aktuálny adresár na nový priečinok.

Pred inštaláciou Flask sa uistite, že na svojom počítači používate Python verzie 3.6+. Ak nie, musíte nainštalovať najnovšiu verziu Python verzia.

python --verzia

Potom nainštalujte virtualenvvytvoriť izolované virtuálne vývojové prostredie.

pip install virtualenv

Potom spustite príkaz uvedený nižšie a vytvorte virtuálne prostredie.

virtualenv venv

Nakoniec aktivujte virtuálne prostredie.

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

Nainštalujte požadované balíky

V koreňovom adresári priečinka projektu vytvorte a request.txt súbor a pridajte tieto balíčky.

banke
python-dotenv
psycopg2-binary

Ďalej nainštalujte balíčky.

pip install -r requirements.txt

The psycopg2-binary je knižnica Pythonu, ktorá funguje ako middleware, ktorý vám umožňuje nadviazať spojenie s vašou databázou Postgres a vykonávať rôzne databázové operácie.

Nakoniec vytvorte a .env súbor a vložte adresu URL vašej databázy.

DATABASE_URL= URL vašej databázy

Vytvorte Flask Server

Nakoniec vytvorte app.py súbor v koreňovom adresári a pridajte kód nižšie.

importovať os 
importovať psycopg2
od dotenv importovať load_dotenv
od banke importovať Banka, žiadosť, jsonify

load_dotenv()

app = Banka (__name__)
url = os.getenv("DATABASE_URL")
pripojenie = psycopg2.connect (url)

@app.get("/")
defDomov():
vrátiť"ahoj svet"

Tento kód nastavuje inštanciu aplikácie Flask. Potom vytvorí pripojenie k databáze špecifikovanej v reťazci URL a nakoniec nastaví domovskú cestu, ktorá vráti reťazec ako odpoveď.

Vytvorte rozhranie REST API umožňujúce operácie CRUD

Teraz vytvorte REST API, ktoré implementuje štyri operácie CRUD.

Vytvorte ukážkovú tabuľku

Vytvorte tabuľku používateľov v databáze.

Do súboru app.py pridajte nižšie uvedený kód.

CREATE_USERS_TABLE = "VYTVORIŤ TABUĽKU, AK NEEXISTUJE užívatelia (id SERIAL PRIMARY KEY, názov TEXT);"

s spojenie:
s connection.cursor() ako kurzor:
kurzor.execute (CREATE_USERS_TABLE)

  • Tento kód vytvorí novú tabuľku PostgreSQL s názvom používateľov s dvoma stĺpcami.
  • Používa metódu pripojenia psycopg2 na vytvorenie spojenia s databázou a vytvorí nový objekt kurzora pomocou spojenie.kurzor metóda, ktorá sa používa na vykonanie SQL dotazy.

1. Definujte metódu POST

Vytvorte trasu príspevku na pridanie údajov.

INSERT_USER_RETURN_ID = "INSERT INTO users (name) VALUES (%s) RETURNING id;"
@app.route("/api/user", methods=["POST"])
defcreate_user():
data = request.get_json()
meno = údaje["názov"]
s spojenie:
s connection.cursor() ako kurzor:
kurzor.execute (INSERT_USER_RETURN_ID, (meno,))
user_id = kurzor.fetchone()[0]
vrátiť {"id": ID používateľa, "názov": názov, "správa": f"Používateľ {názov} vytvorené“.}, 201
  • Reťazec dotazu SQL definuje príkaz SQL, ktorý sa vykoná pomocou príkazu kurzor.vykonať metóda na vloženie nového riadku s menom používateľa do používateľov tabuľky v databáze. Vráti novovytvorené ID používateľa.
  • The create_user funkcia berie názov ako parameter na uloženie do databázy, zatiaľ čo kurzor.fetchone je volaná metóda na získanie novovytvoreného ID užívateľa. Nakoniec sa vráti slovník obsahujúci ID a meno novovytvoreného používateľa spolu so správou, že používateľ bol úspešne vytvorený.

2. Definujte metódu GET

Definujte dve cesty získania: jednu na získanie všetkých údajov v databáze a dve na získanie konkrétnych údajov z databázy na základe ID.

SELECT_ALL_USERS = "SELECT * FROM users;"

@app.route("/api/user", methods=["GET"])
defget_all_users():
s spojenie:
s connection.cursor() ako kurzor:
kurzor.execute (SELECT_ALL_USERS)
users = kurzor.fetchall()
ak používatelia:
výsledok = []
pre užívateľ v používatelia:
result.append({"id": používateľ[0], "názov": používateľ[1]})
vrátiť jsonify (výsledok)
inak:
vrátiť jsonify({"chyba": f"Používatelia sa nenašli."}), 404

@app.route("/api/user/", method=["GET"])
defget_user(ID používateľa):
s spojenie:
s connection.cursor() ako kurzor:
kurzor.execute("SELECT * FROM users WHERE id = %s", (ID používateľa,))
user = kurzor.fetchone()
ak užívateľ:
vrátiť jsonify({"id": používateľ[0], "názov": používateľ[1]})
inak:
vrátiť jsonify({"chyba": f"Používateľ s ID {ID používateľa} nenájdené."}), 404

  • Táto prvá trasa API spracováva požiadavky HTTP GET na získanie všetkých používateľov z databázy. Načíta všetkých používateľov z databázy a vráti výsledky vo formáte JSON v odpovedi.
  • Táto druhá cesta API spracováva požiadavky HTTP GET na získanie údajov pre konkrétneho používateľa z databázy. To trvá v ID používateľa ako parameter načíta údaje používateľa z databázy a vráti výsledky vo formáte JSON v odpovedi.

3. Definujte metódu PUT

Vytvorte put route na aktualizáciu uložených údajov v databáze.

@app.route("/api/user/", method=["PUT"])
defupdate_user(ID používateľa):
data = request.get_json()
meno = údaje["názov"]
s spojenie:
s connection.cursor() ako kurzor:
kurzor.execute (UPDATE_USER_BY_ID, (meno, user_id))
ak kurzor.počet riadkov == 0:
vrátiť jsonify({"chyba": f"Používateľ s ID {ID používateľa} nenájdené."}), 404
vrátiť jsonify({"id": ID používateľa, "názov": názov, "správa": f"Používateľ s ID {ID používateľa} aktualizované."})
  • The update_user funkcia berie parameter ID užívateľa ako vstup a používa ho na aktualizáciu mena zadaného užívateľa v databáze.
  • Ak je operácia aktualizácie úspešná, vráti objekt JSON s aktualizovaným ID užívateľa, názvom a správou o úspechu v odpovedi.

4. Definujte metódu DELETE

Implementujte cestu odstránenia na odstránenie uložených údajov konkrétneho používateľa v databáze.

@app.route("/api/user/", method=["DELETE"])
defdelete_user(ID používateľa):
s spojenie:
s connection.cursor() ako kurzor:
kurzor.execute (DELETE_USER_BY_ID, (user_id,))
ak kurzor.počet riadkov == 0:
vrátiť jsonify({"chyba": f"Používateľ s ID {ID používateľa} nenájdené."}), 404
vrátiť jsonify({"správa": f"Používateľ s ID {ID používateľa} odstránené.“})
  • Táto trasa API spracováva funkciu odstránenia konkrétneho používateľa z databázy na základe jeho ID. Ak sa používateľ nenájde, vráti stavový kód 404 s chybovým hlásením. Ak je však operácia odstránenia úspešná, vráti objekt JSON so správou o úspechu v odpovedi.

Zápis REST API pomocou banky

Táto príručka ukazuje, ako používať Flask a Postgres na vytvorenie jednoduchého CRUD REST API spolu s tým, ako na vytvorenie databázového pripojenia a vykonanie rôznych SQL dotazov na čítanie a zápis údajov do a databázy. Teraz môžete vytvoriť jednoduché REST API, ktoré zvládne štyri operácie CRUD požadované v akejkoľvek webovej aplikácii.

Či už vytvárate jednoduchý blog alebo komplexnú webovú aplikáciu, Flask a Postgres ponúkajú výkonné funkcie a možnosti potrebné na vytvorenie robustného backendového systému. Prípadne môžete na zostavenie RESTful API využiť ďalšie technológie, ako sú FastAPI a MongoDB.