Naučite kako izraditi RESTful API koristeći Flask i Postgres, omogućujući besprijekornu razmjenu podataka između vaše aplikacije i vanjskih sustava.

Programska sučelja za aplikacije (API) kritični su dio izgradnje i povezivanja različitih sustava, omogućujući vašim aplikacijama komunikaciju i razmjenu podataka s drugim uslugama.

Iako backend razvoj uključuje više od samog pisanja API-ja — on također pokriva pisanje poslovne logike na strani poslužitelja, projektiranje učinkovitog sustava arhitekture i druge ključne funkcije, čitajte dalje kako biste naučili kako izgraditi jednostavan CRUD REST API s Flaskom (lagani Python okvir) i Postgresom baza podataka.

Korištenje Flaska za izradu pozadinskih API-ja

Boca je lagana Python okvir koji pruža niz značajki za pojednostavljenje pisanja pozadinskih API-ja za web klijente napisanih korištenjem različitih tehnologija kao što su React i Angular.

Izvorni kod ovog projekta možete pronaći ovdje GitHub spremište.

Ovaj vodič će vas provesti kroz pisanje a

REST API koji implementira četiri CRUD operacije: stvaranje, čitanje, ažuriranje i brisanje za upravljanje korisničkim podacima pohranjenim u Postgres bazi podataka.

Postavite Postgres bazu podataka

Za početak idite na ElephantSQL, rješenje za hosting baze podataka temeljeno na oblaku koje pruža platformu za stvaranje i upravljanje Postgres bazama podataka u oblaku, prijavite se i prijavite se na stranicu pregleda vašeg računa.

Kliknite na Stvori novu instancu gumb za stvaranje nove instance za vašu aplikaciju.

Navedite naziv svoje instance i odaberite besplatni plan te na kraju odaberite regiju u kojoj će se instanca nalaziti kako biste dovršili postupak postavljanja.

Nakon što je instanca stvorena, idite na stranicu postavki i kopirajte URL baze podataka, koristit ćete ga za uspostavljanje veze s bazom podataka.

Postavite Flask poslužitelj

Na svom terminalu stvorite mapu projekta i promijenite trenutni direktorij u tu novu mapu.

Prije instaliranja Flaska, potvrdite da na svom računalu koristite Python verziju 3.6+. Ako ne, morate instalirati najnoviju Piton verzija.

python --verzija

Nakon toga instalirajte virtualenv, za stvaranje izoliranog virtualnog razvojnog okruženja.

pip instaliraj virtualenv

Zatim pokrenite donju naredbu za stvaranje virtualnog okruženja.

virtualenv venv

Na kraju, aktivirajte virtualno okruženje.

# U sustavu Windows: 
.\venv\Skripte\aktivirati
# Na Unixu ili MacOS-u:
izvor venv/bin/aktivirati

Instalirajte potrebne pakete

U korijenskom direktoriju mape vašeg projekta kreirajte a zahtjevi.txt datoteku i dodajte ove pakete.

pljoska
python-dotenv
psycopg2-binarni

Zatim instalirajte pakete.

pip install -r zahtjevi.txt

The psycopg2-binarni je Python biblioteka koja djeluje kao posredni softver, kako bi vam omogućila uspostavljanje veza s vašom Postgres bazom podataka i izvođenje raznih operacija baze podataka.

Na kraju, stvorite a .env datoteku i zalijepite URL vaše baze podataka.

DATABASE_URL= URL vaše baze podataka

Napravite Flask poslužitelj

Na kraju, stvorite app.py datoteku u korijenskom direktoriju i dodajte kod ispod.

uvoz os 
uvoz psycopg2
iz dotenv uvoz load_dotenv
iz pljoska uvoz Flask, zahtjev, jsonify

load_dotenv()

aplikacija = Flask (__ime__)
url = os.getenv("DATABASE_URL")
veza = psycopg2.connect (url)

@app.get("/")
defDom():
povratak"Pozdrav svijete"

Ovaj kod postavlja instancu Flask aplikacije. Zatim stvara vezu s bazom podataka navedenom u nizu URL-a i na kraju postavlja početnu rutu koja vraća niz kao odgovor.

Stvorite REST API koji omogućuje CRUD operacije

Sada izgradite REST API koji implementira četiri CRUD operacije.

Napravite demo tablicu

Napravite tablicu korisnika unutar baze podataka.

U datoteku app.py dodajte kod u nastavku.

CREATE_USERS_TABLE = "KREIRAJ TABLICU AKO NE POSTOJI korisnika (id SERIJSKI PRIMARNI KLJUČ, ime TEKST);"

s veza:
s veza.kursor() kao kursor:
cursor.execute (CREATE_USERS_TABLE)

  • Ovaj kod stvara novu PostgreSQL tablicu pod nazivom korisnika sa dva stupca.
  • Koristi metodu veze psycopg2 za uspostavljanje veze s bazom podataka i stvara novi objekt kursora pomoću veza.kursor metoda koja se koristi za izvođenje SQL upiti.

1. Definirajte POST metodu

Stvorite rutu objave za dodavanje podataka.

INSERT_USER_RETURN_ID = "INSERT INTO korisnici (ime) VRIJEDNOSTI (%s) RETURNING id;"
@app.route("/api/user", metode=["POST"])
defstvoriti_korisnika():
podaci = zahtjev.get_json()
ime = podaci["Ime"]
s veza:
s veza.kursor() kao kursor:
cursor.execute (INSERT_USER_RETURN_ID, (ime,))
user_id = cursor.fetchone()[0]
povratak {"iskaznica": korisnički_id, "Ime": Ime, "poruka": f"Korisnik {Ime} stvorio."}, 201
  • Niz SQL upita definira SQL naredbu koja će se izvršiti pomoću kursor.izvršiti metoda za umetanje novog retka s korisničkim imenom u korisnika tablica u bazi podataka. Vraća novostvoreni korisnički ID.
  • The stvoriti_korisnika funkcija uzima ime kao parametar za pohranu u bazu podataka dok kursor.fetchone poziva se metoda za dohvaćanje novostvorenog ID-a korisnika. Konačno, vraća se rječnik koji sadrži ID i ime novostvorenog korisnika, zajedno s porukom koja pokazuje da je korisnik uspješno kreiran.

2. Definirajte metodu GET

Definirajte dvije rute dobivanja: jednu za dohvaćanje svih podataka u bazi podataka i drugu za dohvaćanje određenih podataka iz baze podataka na temelju ID-a.

SELECT_ALL_USERS = "SELECT * FROM korisnika;"

@app.route("/api/user", metode=["GET"])
defdobiti_sve_korisnike():
s veza:
s veza.kursor() kao kursor:
cursor.execute (SELECT_ALL_USERS)
korisnici = cursor.fetchall()
ako korisnici:
rezultat = []
za korisnik u korisnici:
result.append({"iskaznica": korisnik[0], "Ime": korisnik[1]})
povratak jsonify (rezultat)
drugo:
povratak jsonify({"greška": f"Korisnici nisu pronađeni."}), 404

@app.route("/api/korisnik/", metode=["GET"])
defget_user(user_id):
s veza:
s veza.kursor() kao kursor:
cursor.execute("SELECT * FROM korisnici WHERE id = %s", (user_id,))
korisnik = cursor.fetchone()
ako korisnik:
povratak jsonify({"iskaznica": korisnik[0], "Ime": korisnik[1]})
drugo:
povratak jsonify({"greška": f"Korisnik s ID-om {user_id} nije pronađeno."}), 404

  • Ova prva API ruta obrađuje HTTP GET zahtjeve za dohvaćanje svih korisnika iz baze podataka. Dohvaća sve korisnike iz baze podataka i u odgovoru vraća rezultate u JSON formatu.
  • Ova druga API ruta obrađuje HTTP GET zahtjeve za dohvaćanje podataka za određenog korisnika iz baze podataka. Potrebno je u ID korisnika kao parametar dohvaća korisničke podatke iz baze podataka i u odgovoru vraća rezultate u JSON formatu.

3. Definirajte PUT metodu

Stvorite putanju za ažuriranje pohranjenih podataka u bazi podataka.

@app.route("/api/korisnik/", metode=["PUT"])
defupdate_user(user_id):
podaci = zahtjev.get_json()
ime = podaci["Ime"]
s veza:
s veza.kursor() kao kursor:
cursor.execute (UPDATE_USER_BY_ID, (ime, user_id))
ako cursor.rowcount == 0:
povratak jsonify({"greška": f"Korisnik s ID-om {user_id} nije pronađeno."}), 404
povratak jsonify({"iskaznica": korisnički_id, "Ime": Ime, "poruka": f"Korisnik s ID-om {user_id} ažurirano."})
  • The update_user funkcija uzima parametar ID korisnika kao ulaz i koristi ga za ažuriranje imena navedenog korisnika u bazi podataka.
  • Ako je operacija ažuriranja uspješna, vraća JSON objekt s ažuriranim ID-om korisnika, imenom i porukom o uspjehu u odgovoru.

4. Definirajte metodu DELETE

Implementirajte rutu brisanja za brisanje pohranjenih podataka određenog korisnika u bazi podataka.

@app.route("/api/korisnik/", metode=["DELETE"])
defizbrisati_korisnika(user_id):
s veza:
s veza.kursor() kao kursor:
cursor.execute (DELETE_USER_BY_ID, (user_id,))
ako cursor.rowcount == 0:
povratak jsonify({"greška": f"Korisnik s ID-om {user_id} nije pronađeno."}), 404
povratak jsonify({"poruka": f"Korisnik s ID-om {user_id} izbrisan."})
  • Ova API ruta upravlja funkcijom brisanja određenog korisnika iz baze podataka na temelju njihovog ID-a. Ako se korisnik ne pronađe, vraća statusni kod 404 s porukom o pogrešci. Međutim, ako je operacija brisanja uspješna, vraća JSON objekt s porukom o uspjehu u odgovoru.

Pisanje REST API-ja s Flaskom

Ovaj vodič demonstrira kako koristiti Flask i Postgres za izgradnju jednostavnog CRUD REST API-ja uz, kako za uspostavljanje veze s bazom podataka i izvršavanje različitih SQL upita za čitanje i pisanje podataka u a baza podataka. Sada možete izraditi jednostavan REST API koji može obraditi četiri CRUD operacije potrebne u bilo kojoj web aplikaciji.

Bilo da gradite jednostavan blog ili složenu web aplikaciju, Flask i Postgres nude moćne značajke i mogućnosti potrebne za stvaranje robusnog pozadinskog sustava. Alternativno, možete koristiti druge tehnologije kao što su FastAPI i MongoDB za izgradnju RESTful API-ja.