Siit saate teada, kuidas luua Flaski ja Postgresi abil RESTful API, mis võimaldab sujuvat andmevahetust teie rakenduse ja välissüsteemide vahel.

Rakenduste programmeerimisliidesed (API-d) on erinevate süsteemide loomise ja ühendamise oluline osa, võimaldades teie rakendustel suhelda ja vahetada andmeid teiste teenustega.

Kuigi taustaarendus hõlmab enamat kui lihtsalt API-de kirjutamist – see hõlmab ka serveripoolse äriloogika kirjutamist ja tõhusa süsteemi kujundamist. arhitektuurid ja muud võtmefunktsioonid, lugege edasi, et õppida, kuidas luua lihtsat CRUD REST API-t Flaski (kerge Pythoni raamistik) ja Postgresiga andmebaasi.

Flaski kasutamine taustaprogrammi API-de loomiseks

Kolb on kergekaaluline Pythoni raamistik mis pakub mitmeid funktsioone, mis lihtsustavad taustaprogrammi API-de kirjutamist veebiklientidele, mis on kirjutatud erinevate tehnoloogiatega, nagu React ja Angular.

Selle projekti lähtekoodi leiate siit GitHubi hoidla.

See juhend juhendab teid a REST API, mis rakendab nelja CRUD toimingut

: looge, lugege, värskendage ja kustutage Postgresi andmebaasi salvestatud kasutajaandmete haldamiseks.

Seadistage Postgresi andmebaas

Alustamiseks minge aadressile ElephantSQL, pilvepõhine andmebaasi hostimislahendus, mis pakub platvormi Postgresi andmebaaside loomiseks ja haldamiseks pilves, registreerumiseks ja oma konto ülevaatelehele sisselogimiseks.

Klõpsake nuppu Looge uus eksemplar nuppu, et luua oma rakendusele uus eksemplar.

Sisestage oma eksemplari nimi ja valige tasuta plaan ning lõpuks valige seadistusprotsessi lõpetamiseks piirkond, kus eksemplari hostitakse.

Kui eksemplar on loodud, liikuge seadete lehele ja kopeerige andmebaasi URL, kasutate seda andmebaasiga ühenduse loomiseks.

Seadistage Flask Server

Looge oma terminalis projekti kaust ja muutke praegune kataloog selle uue kausta vastu.

Enne Flaski installimist veenduge, et teie arvutis on Pythoni versioon 3.6+. Kui ei, peate installima uusima Python versioon.

python -- versioon

Pärast seda installige virtualenv, et luua isoleeritud virtuaalne arenduskeskkond.

pip install virtualenv

Järgmisena käivitage virtuaalse keskkonna loomiseks allolev käsk.

virtualenv venv

Lõpuks aktiveerige virtuaalne keskkond.

# Windowsis: 
.\venv\Scripts\activate
# Unixis või MacOS-is:
allikas venv/bin/activate

Installige nõutavad paketid

Looge oma projektikausta juurkataloogis a nõuded.txt faili ja lisage need paketid.

kolb
python-dotenv
psycopg2-binaarne

Järgmisena installige paketid.

pip install -r nõuded.txt

The psycopg2-binaarne on Pythoni teek, mis toimib vahevarana, mis võimaldab teil luua ühendusi oma Postgresi andmebaasiga ja teha erinevaid andmebaasi toiminguid.

Lõpuks looge a .env faili ja kleepige oma andmebaasi URL.

DATABASE_URL= teie andmebaasi URL

Looge Flask Server

Lõpuks looge an app.py faili juurkataloogis ja lisage allolev kood.

importida os 
importida psycopg2
alates dotenv importida load_dotenv
alates kolb importida Kolb, taotle, jsonify

load_dotenv()

rakendus = Kolb (__name__)
url = os.getenv("DATABASE_URL")
ühendus = psycopg2.connect (url)

@app.get("/")
defKodu():
tagasi"Tere, Maailm"

See kood seadistab rakenduse Flask eksemplari. Seejärel loob see ühenduse URL-i stringis määratud andmebaasiga ja lõpuks seadistab kodutee, mis tagastab vastusena stringi.

Looge REST API, mis lubab CRUD toiminguid

Nüüd looge REST API, mis rakendab nelja CRUD-i toimingut.

Loo demotabel

Loo andmebaasis kasutajatabel.

Lisage faili app.py allolev kood.

CREATE_USERS_TABLE = "LOO TABEL, KUI POLE OLEMAS kasutajaid (id SERIAL PRIMARY KEY, name TEXT);"

koos ühendus:
koos ühendus.kursor() nagu kursor:
cursor.execute (CREATE_USERS_TABLE)

  • See kood loob uue PostgreSQL-i tabeli nimega kasutajad kahe veeruga.
  • See kasutab andmebaasiga ühenduse loomiseks psycopg2 ühendusmeetodit ja loob uue kursoriobjekti kasutades ühendus.kursor meetod, mida kasutatakse täitmiseks SQL päringud.

1. Määratlege POST-meetod

Andmete lisamiseks looge postitusmarsruut.

INSERT_USER_RETURN_ID = "INSERT INTO kasutajad (nimi) VÄÄRTUSED (%s) TAGASTUSID;"
@app.route("/api/user", method=["POSTITA"])
defloo_kasutaja():
andmed = request.get_json()
nimi = andmed["nimi"]
koos ühendus:
koos ühendus.kursor() nagu kursor:
cursor.execute (INSERT_USER_RETURN_ID, (nimi,))
kasutaja_id = cursor.fetchone()[0]
tagasi {"id": kasutaja ID, "nimi": nimi, "sõnum": f"Kasutaja {nimi} loodud."}, 201
  • SQL-i päringustring määratleb SQL-lause, mis käivitatakse kasutades kursor.käivita meetod kasutajanimega uue rea sisestamiseks kasutajate tabel andmebaasis. See tagastab vastloodud kasutaja ID.
  • The loo_kasutaja Funktsioon võtab andmebaasi salvestatava parameetrina nime kursor.fetchone meetod kutsutakse välja vastloodud kasutaja ID hankimiseks. Lõpuks tagastatakse sõnastik, mis sisaldab vastloodud kasutaja ID-d ja nime, koos sõnumiga, mis näitab, et kasutaja loodi edukalt.

2. Määratlege GET-meetod

Määratlege kaks hankimismarsruuti: üks kõigi andmebaasis olevate andmete hankimiseks ja kaks konkreetsete andmete toomiseks andmebaasist ID põhjal.

SELECT_ALL_USERS = "SELECT * FROM kasutajad;"

@app.route("/api/user", method=["GET"])
defhanki_kõik_kasutajad():
koos ühendus:
koos ühendus.kursor() nagu kursor:
cursor.execute (SELECT_ALL_USERS)
kasutajad = cursor.fetchall()
kui kasutajad:
tulemus = []
jaoks kasutaja sisse kasutajad:
result.append({"id": kasutaja[0], "nimi": kasutaja[1]})
tagasi jsonify (tulemus)
muidu:
tagasi jsonify({"viga": f "Kasutajaid ei leitud."}), 404

@app.route("/api/user/", meetodid=["GET"])
defhanki_kasutaja(kasutaja ID):
koos ühendus:
koos ühendus.kursor() nagu kursor:
cursor.execute("SELECT * FROM kasutajad WHERE id = %s", (kasutaja ID,))
kasutaja = cursor.fetchone()
kui kasutaja:
tagasi jsonify({"id": kasutaja[0], "nimi": kasutaja[1]})
muidu:
tagasi jsonify({"viga": f"ID-ga kasutaja {kasutaja ID} ei leitud."}), 404

  • See esimene API marsruut käsitleb HTTP GET taotlusi kõigi kasutajate toomiseks andmebaasist. See otsib andmebaasist kõik kasutajad ja tagastab vastuses tulemused JSON-vormingus.
  • See teine ​​API marsruut käsitleb HTTP GET taotlusi konkreetse kasutaja andmete toomiseks andmebaasist. See võtab sisse kasutaja ID parameetrina hangib andmebaasist kasutaja andmed ja tagastab vastuses tulemused JSON-vormingus.

3. Määratlege PUT-meetod

Andmebaasi salvestatud andmete värskendamiseks looge müügimarsruut.

@app.route("/api/user/", meetodid=["PANGE"])
defupdate_user(kasutaja ID):
andmed = request.get_json()
nimi = andmed["nimi"]
koos ühendus:
koos ühendus.kursor() nagu kursor:
cursor.execute (UPDATE_USER_BY_ID, (nimi, kasutaja_id))
kui cursor.rowcount == 0:
tagasi jsonify({"viga": f"ID-ga kasutaja {kasutaja ID} ei leitud."}), 404
tagasi jsonify({"id": kasutaja ID, "nimi": nimi, "sõnum": f"ID-ga kasutaja {kasutaja ID} uuendatud."})
  • The update_user funktsioon võtab kasutaja ID parameetri sisendiks ja kasutab seda määratud kasutaja nime värskendamiseks andmebaasis.
  • Kui värskendustoiming õnnestub, tagastab see vastuses JSON-objekti koos värskendatud kasutaja ID, nime ja edusõnumiga.

4. Määratlege DELETE meetod

Rakendage kustutamismarsruut, et kustutada andmebaasis konkreetse kasutaja salvestatud andmed.

@app.route("/api/user/", meetodid=["KUSTUTA"])
defkustuta_kasutaja(kasutaja ID):
koos ühendus:
koos ühendus.kursor() nagu kursor:
cursor.execute (DELETE_USER_BY_ID, (user_id,))
kui cursor.rowcount == 0:
tagasi jsonify({"viga": f"ID-ga kasutaja {kasutaja ID} ei leitud."}), 404
tagasi jsonify({"sõnum": f"ID-ga kasutaja {kasutaja ID} kustutatud."})
  • See API marsruut haldab konkreetse kasutaja kustutamisfunktsiooni andmebaasist tema ID alusel. Kui kasutajat ei leita, tagastab see 404 olekukoodi koos veateatega. Kui aga kustutamistoiming on edukas, tagastab see JSON-objekti, mille vastuses on eduteade.

REST API-de kirjutamine Flaskiga

See juhend näitab, kuidas kasutada Flaski ja Postgresi lihtsa CRUD REST API koostamiseks andmebaasiühenduse loomiseks ja erinevate SQL-päringute täitmiseks andmete lugemiseks ja kirjutamiseks a andmebaasi. Nüüd saate luua lihtsa REST API-liidese, mis suudab hakkama saada kõigis veebirakendustes nõutavate nelja CRUD-toiminguga.

Olenemata sellest, kas loote lihtsat ajaveebi või keerukat veebirakendust, pakuvad Flask ja Postgres võimsaid funktsioone ja võimalusi, mis on vajalikud tugeva taustasüsteemi loomiseks. Teise võimalusena saate RESTful API-de loomiseks kasutada muid tehnoloogiaid, nagu FastAPI ja MongoDB.