Naučite se ustvariti RESTful API z uporabo Flask in Postgres, ki omogoča brezhibno izmenjavo podatkov med vašo aplikacijo in zunanjimi sistemi.

Programski vmesniki aplikacij (API) so ključni del gradnje in povezovanja različnih sistemov, ki vašim aplikacijam omogočajo komunikacijo in izmenjavo podatkov z drugimi storitvami.

Medtem ko razvoj zaledja vključuje več kot samo pisanje API-jev – zajema tudi pisanje poslovne logike na strani strežnika, oblikovanje učinkovitega sistema arhitekture in druge ključne funkcije, berite naprej, če želite izvedeti, kako zgraditi preprost API CRUD REST s Flaskom (lahko ogrodje Python) in Postgres zbirka podatkov.

Uporaba Flaska za gradnjo zalednih API-jev

Bučka je lahka Ogrodje Python ki ponuja številne funkcije za poenostavitev pisanja zalednih API-jev za spletne odjemalce, napisane z uporabo različnih tehnologij, kot sta React in Angular.

Tukaj lahko najdete izvorno kodo tega projekta Repozitorij GitHub.

Ta vodnik vas bo vodil skozi pisanje a REST API, ki izvaja štiri operacije CRUD

instagram viewer
: ustvarjanje, branje, posodabljanje in brisanje za upravljanje uporabniških podatkov, shranjenih v bazi podatkov Postgres.

Nastavite zbirko podatkov Postgres

Za začetek pojdite na ElephantSQL, rešitev za gostovanje baz podatkov v oblaku, ki ponuja platformo za ustvarjanje in upravljanje baz podatkov Postgres v oblaku, se prijavite in prijavite na stran s pregledom vašega računa.

Kliknite na Ustvari nov primerek gumb za ustvarjanje novega primerka za vašo aplikacijo.

Vnesite ime svojega primerka in izberite brezplačen načrt ter na koncu izberite regijo, kjer bo gostoval primerek, da dokončate postopek namestitve.

Ko je primerek ustvarjen, se pomaknite na stran z nastavitvami in kopirajte URL baze podatkov, ga boste uporabili za vzpostavitev povezave z bazo podatkov.

Nastavite strežnik Flask

Na vašem terminalu ustvarite mapo projekta in spremenite trenutni imenik v to novo mapo.

Preden namestite Flask, potrdite, da na vašem računalniku uporabljate Python različice 3.6+. Če ne, morate namestiti najnovejšo Python različica.

python --različica

Nato namestite virtualenv, za ustvarjanje izoliranega virtualnega razvojnega okolja.

pip namestite virtualenv

Nato zaženite spodnji ukaz, da ustvarite virtualno okolje.

virtualenv venv

Nazadnje aktivirajte virtualno okolje.

# V sistemu Windows: 
.\venv\Skripti\aktivirati
# V sistemu Unix ali MacOS:
vir venv/bin/activate

Namestite zahtevane pakete

V korenskem imeniku mape projekta ustvarite a zahteve.txt datoteko in dodajte te pakete.

bučko
python-dotenv
psycopg2-binarni

Nato namestite pakete.

pip install -r requirements.txt

The psycopg2-binarni je knjižnica Python, ki deluje kot vmesna programska oprema, ki vam omogoča vzpostavljanje povezav z bazo podatkov Postgres in izvajanje različnih operacij baze podatkov.

Na koncu ustvarite a .env datoteko in prilepite URL svoje zbirke podatkov.

DATABASE_URL= URL vaše baze podatkov

Ustvarite strežnik Flask

Končno ustvarite app.py datoteko v korenskem imeniku in dodajte spodnjo kodo.

uvoz os 
uvoz psycopg2
od dotenv uvoz load_dotenv
od bučko uvoz Bučka, zahteva, jsonify

load_dotenv()

app = Flask (__ime__)
url = os.getenv("DATABASE_URL")
povezava = psycopg2.connect (url)

@app.get("/")
defdomov():
vrnitev"Pozdravljen, svet"

Ta koda nastavi primerek aplikacije Flask. Nato ustvari povezavo z bazo podatkov, določeno v nizu URL-ja, in nazadnje nastavi domačo pot, ki kot odgovor vrne niz.

Ustvarite REST API, ki omogoča operacije CRUD

Zdaj zgradite REST API, ki izvaja štiri operacije CRUD.

Ustvarite demo tabelo

V bazi podatkov ustvarite tabelo uporabnikov.

V datoteko app.py dodajte spodnjo kodo.

CREATE_USERS_TABLE = "USTVARI TABELO, ČE NE OBSTAJA uporabnikov (id SERIJSKI PRIMARNI KLJUČ, ime TEXT);"

z povezava:
z povezava.cursor() kot kazalec:
cursor.execute (CREATE_USERS_TABLE)

  • Ta koda ustvari novo tabelo PostgreSQL, imenovano uporabniki z dvema stolpcema.
  • Uporablja metodo povezave psycopg2 za vzpostavitev povezave z bazo podatkov in ustvari nov objekt kazalca z uporabo povezava.kurzor metoda, ki se uporablja za izvedbo SQL poizvedbe.

1. Določite metodo POST

Ustvarite pot objave, da dodate podatke.

INSERT_USER_RETURN_ID = "INSERT INTO uporabniki (ime) VREDNOSTI (%s) RETURNING id;"
@app.route("/api/user", metode=["POST"])
defcreate_user():
podatki = request.get_json()
ime = podatki ["ime"]
z povezava:
z povezava.cursor() kot kazalec:
cursor.execute (INSERT_USER_RETURN_ID, (ime,))
user_id = cursor.fetchone()[0]
vrnitev {"id": Uporabniško ime, "ime": ime, "sporočilo": f"Uporabnik {name} ustvarjen."}, 201
  • Niz poizvedbe SQL definira stavek SQL, ki bo izveden z uporabo kazalec.izvedba za vstavljanje nove vrstice z imenom uporabnika v uporabnikov tabelo v bazi podatkov. Vrne novo ustvarjeni ID uporabnika.
  • The create_user funkcija sprejme ime kot parameter za shranjevanje v bazi podatkov, medtem ko cursor.fetchone se kliče metoda za pridobitev novo ustvarjenega ID-ja uporabnika. Nazadnje se vrne slovar, ki vsebuje ID in ime na novo ustvarjenega uporabnika, skupaj s sporočilom, ki nakazuje, da je bil uporabnik uspešno ustvarjen.

2. Definirajte metodo GET

Definirajte dve poti pridobivanja: eno za pridobivanje vseh podatkov v bazi podatkov in drugo za pridobivanje določenih podatkov iz baze podatkov na podlagi ID-ja.

SELECT_ALL_USERS = "IZBERI * IZ uporabnikov;"

@app.route("/api/user", metode=["GET"])
defget_all_users():
z povezava:
z povezava.cursor() kot kazalec:
cursor.execute (SELECT_ALL_USERS)
uporabniki = cursor.fetchall()
če uporabniki:
rezultat = []
za uporabnik v uporabniki:
result.append({"id": uporabnik [0], "ime": uporabnik [1]})
vrnitev jsonify (rezultat)
drugače:
vrnitev jsonify({"napaka": f"Uporabniki niso bili najdeni."}), 404

@app.route("/api/uporabnik/", metode=["GET"])
defget_user(Uporabniško ime):
z povezava:
z povezava.cursor() kot kazalec:
cursor.execute("IZBERI * OD uporabnikov WHERE id = %s", (Uporabniško ime,))
uporabnik = cursor.fetchone()
če uporabnik:
vrnitev jsonify({"id": uporabnik [0], "ime": uporabnik [1]})
drugače:
vrnitev jsonify({"napaka": f"Uporabnik z ID-jem {Uporabniško ime} ni najdeno."}), 404

  • Ta prva API pot obravnava zahteve HTTP GET za pridobivanje vseh uporabnikov iz baze podatkov. Pridobi vse uporabnike iz baze podatkov in v odgovoru vrne rezultate v formatu JSON.
  • Ta druga pot API obravnava zahteve HTTP GET za pridobivanje podatkov za določenega uporabnika iz baze podatkov. Vzame v Uporabniško ime kot parameter pridobi podatke o uporabniku iz baze podatkov in v odgovoru vrne rezultate v formatu JSON.

3. Definirajte metodo PUT

Ustvarite put pot za posodobitev shranjenih podatkov v bazi podatkov.

@app.route("/api/uporabnik/", metode=["PUT"])
defupdate_user(Uporabniško ime):
podatki = request.get_json()
ime = podatki ["ime"]
z povezava:
z povezava.cursor() kot kazalec:
cursor.execute (UPDATE_USER_BY_ID, (ime, user_id))
če cursor.rowcount == 0:
vrnitev jsonify({"napaka": f"Uporabnik z ID-jem {Uporabniško ime} ni najdeno."}), 404
vrnitev jsonify({"id": Uporabniško ime, "ime": ime, "sporočilo": f"Uporabnik z ID-jem {Uporabniško ime} posodobljen."})
  • The update_user funkcija vzame parameter ID uporabnika kot vhod in ga uporabi za posodobitev imena podanega uporabnika v bazi podatkov.
  • Če je operacija posodabljanja uspešna, vrne objekt JSON s posodobljenim ID-jem uporabnika, imenom in sporočilom o uspehu v odgovoru.

4. Definirajte metodo DELETE

Izvedite brisanje poti za brisanje shranjenih podatkov določenega uporabnika v bazi podatkov.

@app.route("/api/uporabnik/", metode=["DELETE"])
defdelete_user(Uporabniško ime):
z povezava:
z povezava.cursor() kot kazalec:
cursor.execute (DELETE_USER_BY_ID, (user_id,))
če cursor.rowcount == 0:
vrnitev jsonify({"napaka": f"Uporabnik z ID-jem {Uporabniško ime} ni najdeno."}), 404
vrnitev jsonify({"sporočilo": f"Uporabnik z ID-jem {Uporabniško ime} izbrisano."})
  • Ta API pot obravnava funkcijo brisanja določenega uporabnika iz baze podatkov na podlagi njihovega ID-ja. Če uporabnika ni mogoče najti, vrne statusno kodo 404 s sporočilom o napaki. Če pa je operacija brisanja uspešna, vrne objekt JSON s sporočilom o uspehu v odgovoru.

Pisanje API-jev REST s Flaskom

Ta priročnik prikazuje, kako uporabiti Flask in Postgres za izdelavo preprostega API-ja CRUD REST poleg tega, kako za vzpostavitev povezave z bazo podatkov in izvajanje različnih poizvedb SQL za branje in pisanje podatkov v a zbirka podatkov. Zdaj lahko ustvarite preprost API REST, ki lahko obravnava štiri operacije CRUD, potrebne v kateri koli spletni aplikaciji.

Ne glede na to, ali gradite preprost spletni dnevnik ali kompleksno spletno aplikacijo, Flask in Postgres ponujata zmogljive funkcije in zmogljivosti, potrebne za ustvarjanje robustnega zalednega sistema. Druga možnost je, da uporabite druge tehnologije, kot sta FastAPI in MongoDB, da ustvarite API-je RESTful.