Opi luomaan RESTful-sovellusliittymä Flaskin ja Postgresin avulla, mikä mahdollistaa saumattoman tiedonsiirron sovelluksesi ja ulkoisten järjestelmien välillä.

Sovellusohjelmointirajapinnat (API) ovat kriittinen osa eri järjestelmien rakentamista ja yhdistämistä, jolloin sovelluksesi voivat kommunikoida ja vaihtaa tietoja muiden palvelujen kanssa.

Vaikka taustakehitys sisältää enemmän kuin vain API: iden kirjoittamisen, se kattaa myös palvelinpuolen liiketoimintalogiikan kirjoittamisen ja tehokkaan järjestelmän suunnittelun. arkkitehtuurit ja muut keskeiset toiminnot, lue ja opi rakentamaan yksinkertainen CRUD REST API Flaskilla (kevyt Python-kehys) ja Postgresilla. tietokanta.

Flaskin käyttäminen taustasovellusliittymien luomiseen

Pullo on kevyt Python-kehys joka tarjoaa useita ominaisuuksia, jotka yksinkertaistavat taustasovellusliittymien kirjoittamista web-asiakkaille, jotka on kirjoitettu käyttämällä erilaisia ​​tekniikoita, kuten React ja Angular.

Löydät tämän projektin lähdekoodin tästä GitHub-arkisto.

Tämä opas opastaa sinua kirjoittamaan a REST API, joka toteuttaa neljä CRUD-toimintoa: luo, lue, päivitä ja poista Postgres-tietokantaan tallennettujen käyttäjätietojen hallintaan.

Luo Postgres-tietokanta

Aloita siirtymällä kohtaan ElephantSQL, pilvipohjainen tietokantaratkaisu, joka tarjoaa alustan Postgres-tietokantojen luomiseen ja hallintaan pilvessä, rekisteröitymiseen ja kirjautumiseen tilisi yleiskatsaussivulle.

Klikkaa Luo uusi ilmentymä -painiketta luodaksesi uuden esiintymän sovelluksellesi.

Anna ilmentymäsi nimi ja valitse ilmainen suunnitelma ja valitse lopuksi alue, jossa ilmentymää isännöidään viimeistelläksesi asennusprosessin.

Kun ilmentymä on luotu, siirry asetussivulle ja kopioi tietokannan URL-osoite, käytät sitä yhteyden muodostamiseen tietokantaan.

Määritä Flask-palvelin

Luo päätelaitteeseen projektikansio ja vaihda nykyinen hakemisto kyseiseen uuteen kansioon.

Ennen kuin asennat Flaskin, varmista, että koneessasi on Python-versio 3.6+. Jos ei, sinun on asennettava uusin Python versio.

python -- versio

Asenna sen jälkeen virtualenv, luomaan eristetty virtuaalinen kehitysympäristö.

pip install virtualenv

Luo seuraavaksi virtuaalinen ympäristö suorittamalla alla oleva komento.

virtualenv venv

Aktivoi lopuksi virtuaaliympäristö.

# Windowsissa: 
.\venv\Scripts\activate
# Unix tai MacOS:
lähde venv/bin/activate

Asenna tarvittavat paketit

Luo projektikansiosi juurihakemistoon a vaatimukset.txt tiedosto ja lisää nämä paketit.

pullo
python-dotenv
psycopg2-binääri

Seuraavaksi asenna paketit.

pip install -r vaatimukset.txt

The psycopg2-binääri on Python-kirjasto, joka toimii väliohjelmistona, jonka avulla voit muodostaa yhteyksiä Postgres-tietokantaasi ja suorittaa erilaisia ​​tietokantatoimintoja.

Luo lopuksi a .env tiedosto ja liitä tietokannan URL-osoite.

DATABASE_URL= tietokannan URL-osoite

Luo Flask-palvelin

Luo lopuksi an app.py tiedosto juurihakemistoon ja lisää alla oleva koodi.

tuonti os 
tuonti psycopg2
alkaen dotenv tuonti load_dotenv
alkaen pullo tuonti Pullo, pyydä, jsonify

load_dotenv()

app = Kolvi (__name__)
url = os.getenv("DATABASE_URL")
yhteys = psycopg2.connect (url)

@app.get("/")
defKoti():
palata"Hei maailma"

Tämä koodi määrittää Flask-sovelluksen esiintymän. Sitten se luo yhteyden URL-merkkijonossa määritettyyn tietokantaan ja määrittää lopuksi kotireitin, joka palauttaa merkkijonon vastauksena.

Luo REST-sovellusliittymä, joka mahdollistaa CRUD-toiminnot

Rakenna nyt REST API, joka toteuttaa neljä CRUD-toimintoa.

Luo esittelytaulukko

Luo käyttäjätaulukko tietokantaan.

Lisää alla oleva koodi app.py-tiedostoon.

CREATE_USERS_TABLE = "LUO TAULUKON PAIKKA, JOS EI OLE OLEMASSA käyttäjiä (ID SARJAN ENSISIJAINEN AVAIN, nimi TEKSTI);"

kanssa yhteys:
kanssa yhteys.kursori() kuten kohdistin:
cursor.execute (CREATE_USERS_TABLE)

  • Tämä koodi luo uuden PostgreSQL-taulukon nimeltä käyttäjiä kahdella sarakkeella.
  • Se käyttää psycopg2-yhteysmenetelmää yhteyden muodostamiseen tietokantaan ja luo uuden kohdistinobjektin käyttämällä yhteys.kursori menetelmä, jota käytetään suorittamiseen SQL-kyselyt.

1. Määritä POST-menetelmä

Luo viestireitti tietojen lisäämistä varten.

INSERT_USER_RETURN_ID = "LISÄÄ käyttäjiin (nimi) ARVOT (%s) PALAUTUSTUNNUS;"
@app.route("/api/user", method=["POST"])
defluo käyttäjä():
data = request.get_json()
nimi = data["nimi"]
kanssa yhteys:
kanssa yhteys.kursori() kuten kohdistin:
cursor.execute (INSERT_USER_RETURN_ID, (nimi,))
user_id = cursor.fetchone()[0]
palata {"id": käyttäjätunnus, "nimi": nimi, "viesti": f"Käyttäjä {nimi} luotu."}, 201
  • SQL-kyselymerkkijono määrittää SQL-käskyn, joka suoritetaan käyttämällä cursor.execute tapa lisätä uusi rivi käyttäjän nimellä käyttäjien taulukko tietokannassa. Se palauttaa juuri luodun käyttäjätunnuksen.
  • The luo käyttäjä funktio ottaa nimen parametriksi, joka tallennetaan tietokantaan, kun taas cursor.fetchone menetelmää kutsutaan hakemaan juuri luotu käyttäjätunnus. Lopuksi palautetaan sanakirja, joka sisältää juuri luodun käyttäjän tunnuksen ja nimen sekä viestin, joka osoittaa, että käyttäjän luominen onnistui.

2. Määritä GET-menetelmä

Määrittele kaksi hakureittiä: yksi kaikkien tietokannan tietojen hakemiseksi ja kaksi tiettyjen tietojen hakemiseksi tietokannasta tunnuksen perusteella.

SELECT_ALL_USERS = "SELECT * FROM käyttäjiltä;"

@app.route("/api/user", method=["GET"])
defget_all_users():
kanssa yhteys:
kanssa yhteys.kursori() kuten kohdistin:
cursor.execute (SELECT_ALL_USERS)
käyttäjät = cursor.fetchall()
jos käyttäjät:
tulos = []
varten käyttäjä sisään käyttäjät:
result.append({"id": käyttäjä[0], "nimi": käyttäjä[1]})
palata jsonify (tulos)
muu:
palata jsonify({"virhe": f"Käyttäjiä ei löydy."}), 404

@app.route("/api/user/", method=["GET"])
defget_user(käyttäjätunnus):
kanssa yhteys:
kanssa yhteys.kursori() kuten kohdistin:
cursor.execute("SELECT * FROM käyttäjiltä WHERE id = %s", (käyttäjätunnus,))
user = cursor.fetchone()
jos käyttäjä:
palata jsonify({"id": käyttäjä[0], "nimi": käyttäjä[1]})
muu:
palata jsonify({"virhe": f"Käyttäjä, jolla on tunnus {käyttäjätunnus} ei löydetty."}), 404

  • Tämä ensimmäinen API-reitti käsittelee HTTP GET -pyynnöt kaikkien käyttäjien hakemiseksi tietokannasta. Se hakee kaikki käyttäjät tietokannasta ja palauttaa tulokset JSON-muodossa vastauksessa.
  • Tämä toinen API-reitti käsittelee HTTP GET -pyyntöjä tietyn käyttäjän tietojen hakemiseksi tietokannasta. Se vie sisään käyttäjätunnus parametrina hakee käyttäjän tiedot tietokannasta ja palauttaa tulokset JSON-muodossa vastauksessa.

3. Määritä PUT-menetelmä

Luo put-reitti päivittääksesi tietokantaan tallennetut tiedot.

@app.route("/api/user/", method=["PUT"])
defupdate_user(käyttäjätunnus):
data = request.get_json()
nimi = data["nimi"]
kanssa yhteys:
kanssa yhteys.kursori() kuten kohdistin:
cursor.execute (UPDATE_USER_BY_ID, (nimi, user_id))
jos cursor.rowcount == 0:
palata jsonify({"virhe": f"Käyttäjä, jolla on tunnus {käyttäjätunnus} ei löydetty."}), 404
palata jsonify({"id": käyttäjätunnus, "nimi": nimi, "viesti": f"Käyttäjä, jolla on tunnus {käyttäjätunnus} päivitetty."})
  • The update_user toiminto ottaa käyttäjätunnusparametrin syötteeksi ja päivittää sen avulla määritetyn käyttäjän nimen tietokannassa.
  • Jos päivitys on onnistunut, se palauttaa JSON-objektin, jossa on päivitetty käyttäjätunnus, nimi ja onnistumisviesti vastauksessa.

4. Määritä DELETE-menetelmä

Toteuta poistoreitti tietyn käyttäjän tallennettujen tietojen poistamiseksi tietokannasta.

@app.route("/api/user/", method=["POISTA"])
defdelete_user(käyttäjätunnus):
kanssa yhteys:
kanssa yhteys.kursori() kuten kohdistin:
cursor.execute (POISTA_USER_BY_ID, (user_id,))
jos cursor.rowcount == 0:
palata jsonify({"virhe": f"Käyttäjä, jolla on tunnus {käyttäjätunnus} ei löydetty."}), 404
palata jsonify({"viesti": f"Käyttäjä, jolla on tunnus {käyttäjätunnus} poistettu."})
  • Tämä API-reitti hoitaa tietyn käyttäjän poistotoiminnot tietokannasta hänen tunnuksensa perusteella. Jos käyttäjää ei löydy, se palauttaa 404-tilakoodin ja virheilmoituksen. Jos poistotoiminto kuitenkin onnistuu, se palauttaa JSON-objektin ja vastauksessa onnistumisviestin.

REST-sovellusliittymien kirjoittaminen Flaskilla

Tämä opas näyttää, kuinka Flaskia ja Postgresia käytetään yksinkertaisen CRUD REST API: n rakentamiseen rinnalle muodostaa tietokantayhteyden ja suorittaa erilaisia ​​SQL-kyselyitä tietojen lukemiseksi ja kirjoittamiseksi a tietokanta. Voit nyt luoda yksinkertaisen REST API: n, joka pystyy käsittelemään neljää CRUD-toimintoa, jotka vaaditaan missä tahansa verkkosovelluksessa.

Rakennatpa yksinkertaista blogia tai monimutkaista verkkosovellusta, Flask ja Postgres tarjoavat tehokkaita ominaisuuksia ja ominaisuuksia, joita tarvitaan vankan taustajärjestelmän luomiseen. Vaihtoehtoisesti voit käyttää muita tekniikoita, kuten FastAPI: tä ja MongoDB: tä, rakentaaksesi RESTful-sovellusliittymiä.