Sužinokite, kaip sukurti RESTful API naudojant „Flask“ ir „Postgres“, leidžiantį sklandžiai keistis duomenimis tarp programos ir išorinių sistemų.

Taikomųjų programų sąsajos (API) yra svarbi skirtingų sistemų kūrimo ir sujungimo dalis, leidžianti jūsų programoms bendrauti ir keistis duomenimis su kitomis paslaugomis.

Nors backend kūrimas apima ne tik API rašymą, bet ir serverio verslo logikos rašymą, efektyvios sistemos kūrimą. architektūras ir kitas pagrindines funkcijas, skaitykite toliau, kad sužinotumėte, kaip sukurti paprastą CRUD REST API su Flask (lengva Python sistema) ir Postgres. duomenų bazėje.

„Flask“ naudojimas kuriant pagrindines API

Kolba yra lengvas Python sistema kuri suteikia daugybę funkcijų, skirtų supaprastinti užpakalinių API rašymą žiniatinklio klientams, parašytiems naudojant skirtingas technologijas, pvz., „React“ ir „Angular“.

Šio projekto šaltinio kodą galite rasti čia GitHub saugykla.

Šis vadovas padės jums rašyti a REST API, įgyvendinanti keturias CRUD operacijas

instagram viewer
: kurti, skaityti, atnaujinti ir ištrinti, kad galėtumėte tvarkyti vartotojo duomenis, saugomus Postgres duomenų bazėje.

Sukurkite „Postgres“ duomenų bazę

Norėdami pradėti, eikite į ElephantSQL, debesies pagrindu sukurtas duomenų bazių prieglobos sprendimas, suteikiantis platformą kurti ir valdyti Postgres duomenų bazes debesyje, prisiregistruoti ir prisijungti prie paskyros apžvalgos puslapio.

Spustelėkite Sukurti naują egzempliorių mygtuką, kad sukurtumėte naują programos egzempliorių.

Nurodykite egzemplioriaus pavadinimą ir pasirinkite nemokamą planą, o galiausiai pasirinkite regioną, kuriame egzempliorius bus priglobtas, kad užbaigtumėte sąrankos procesą.

Sukūrę egzempliorių, eikite į nustatymų puslapį ir nukopijuokite duomenų bazės URL, naudosite jį ryšiui su duomenų baze užmegzti.

Nustatykite „Flask“ serverį

Savo terminale sukurkite projekto aplanką ir pakeiskite dabartinį katalogą į tą naują aplanką.

Prieš diegdami „Flask“, įsitikinkite, kad įrenginyje veikia „Python“ 3.6 naujesnė versija. Jei ne, turite įdiegti naujausią Python versija.

python -- versija

Po to įdiekite virtualenv, sukurti izoliuotą virtualią kūrimo aplinką.

pip įdiegti virtualenv

Tada paleiskite toliau pateiktą komandą, kad sukurtumėte virtualią aplinką.

virtualenv venv

Galiausiai suaktyvinkite virtualią aplinką.

# Sistemoje Windows: 
.\venv\Scripts\activate
# „Unix“ arba „MacOS“:
šaltinis venv/bin/activate

Įdiekite reikiamus paketus

Projekto aplanko šakniniame kataloge sukurkite a reikalavimai.txt failą ir pridėkite šiuos paketus.

kolba
python-dotenv
psycopg2 dvejetainis

Tada įdiekite paketus.

pip install -r reikalavimai.txt

The psycopg2 dvejetainis yra Python biblioteka, kuri veikia kaip tarpinė programinė įranga, leidžianti užmegzti ryšius su Postgres duomenų baze ir atlikti įvairias duomenų bazės operacijas.

Galiausiai sukurkite a .env failą ir įklijuokite savo duomenų bazės URL.

DATABASE_URL= jūsų duomenų bazės URL

Sukurkite „Flask Server“.

Galiausiai sukurkite an app.py failą šakniniame kataloge ir toliau pridėkite kodą.

importuoti os 
importuoti psichopg2
dotenv importuoti load_dotenv
kolba importuoti Kolba, prašymas, jsonify

load_dotenv()

programa = Kolba (__name__)
url = os.getenv(„DATABASE_URL“)
ryšys = psycopg2.connect (url)

@app.get("/")
defnamai():
grąžinti"Labas pasauli"

Šis kodas nustato programos „Flask“ egzempliorių. Tada jis sukuria ryšį su duomenų baze, nurodyta URL eilutėje, ir galiausiai nustato namų maršrutą, kuris grąžina eilutę kaip atsakymą.

Sukurkite REST API, leidžiančią įgalinti CRUD operacijas

Dabar sukurkite REST API, kuri įgyvendina keturias CRUD operacijas.

Sukurkite demonstracinę lentelę

Sukurkite vartotojų lentelę duomenų bazėje.

Į failą app.py pridėkite toliau esantį kodą.

CREATE_USERS_TABLE = "KURTI LENTELĘ, JEI NĖRA vartotojų (id SERIAL PRIMARY KEY, pavadinimo TEKSTAS);"

su ryšys:
su connect.cursor() kaip žymeklis:
cursor.execute (CREATE_USERS_TABLE)

  • Šis kodas sukuria naują PostgreSQL lentelę, vadinamą vartotojų su dviem stulpeliais.
  • Jis naudoja psycopg2 ryšio metodą ryšiui su duomenų baze užmegzti ir sukuria naują žymeklio objektą naudodamas ryšys.žymeklis metodas, kuris naudojamas vykdyti SQL užklausos.

1. Apibrėžkite POST metodą

Norėdami pridėti duomenų, sukurkite pašto maršrutą.

INSERT_USER_RETURN_ID = "INSERT INTO user (vardas) VERTES (%s) GRĄŽINANTIS ID;"
@app.route("/api/user", method=["POST"])
defsukurti_vartotojas():
duomenys = request.get_json()
vardas = duomenys["vardas"]
su ryšys:
su connect.cursor() kaip žymeklis:
cursor.execute (INSERT_USER_RETURN_ID, (vardas,))
user_id = cursor.fetchone()[0]
grąžinti {"id": Vartotojo ID, "vardas": vardas, "žinutė": f"Vartotojas {vardas} sukurtas“.}, 201
  • SQL užklausos eilutė apibrėžia SQL sakinį, kuris bus vykdomas naudojant žymeklis.vykdyti būdas įterpti naują eilutę su vartotojo vardu vartotojų lentelę duomenų bazėje. Jis grąžina naujai sukurtą vartotojo ID.
  • The sukurti_vartotojas funkcija naudoja pavadinimą kaip parametrą, kurį reikia saugoti duomenų bazėje žymeklis.fetchone metodas iškviečiamas naujai sukurtam vartotojo ID nuskaityti. Galiausiai grąžinamas žodynas, kuriame yra naujai sukurto vartotojo ID ir vardas bei pranešimas, nurodantis, kad vartotojas buvo sėkmingai sukurtas.

2. Apibrėžkite GET metodą

Apibrėžkite du gavimo maršrutus: vieną, kad gautumėte visus duomenis iš duomenų bazės, ir du, kad gautumėte konkrečius duomenis iš duomenų bazės pagal ID.

SELECT_ALL_USERS = "SELECT * FROM vartotojų;"

@app.route("/api/user", method=["GET"])
defget_all_users():
su ryšys:
su connect.cursor() kaip žymeklis:
cursor.execute (SELECT_ALL_USERS)
vartotojai = cursor.fetchall()
jeigu vartotojai:
rezultatas = []
dėl Vartotojas in vartotojai:
result.append({"id": Vartotojas[0], "vardas": Vartotojas[1]})
grąžinti jsonify (rezultatas)
Kitas:
grąžinti jsonify({"klaida": f „Vartotojai nerasta“.}), 404

@app.route("/api/user/", Metodai = [GET"])
defget_user(Vartotojo ID):
su ryšys:
su connect.cursor() kaip žymeklis:
cursor.execute("SELECT * FROM user WHERE ID = %s", (Vartotojo ID,))
user = cursor.fetchone()
jeigu Vartotojas:
grąžinti jsonify({"id": Vartotojas[0], "vardas": Vartotojas[1]})
Kitas:
grąžinti jsonify({"klaida": f"Vartotojas su ID {Vartotojo ID} nerastas."}), 404

  • Šis pirmasis API maršrutas tvarko HTTP GET užklausas, kad būtų galima gauti visus vartotojus iš duomenų bazės. Jis nuskaito visus vartotojus iš duomenų bazės ir atsakyme pateikia rezultatus JSON formatu.
  • Šis antrasis API maršrutas tvarko HTTP GET užklausas, skirtas konkretaus vartotojo duomenims iš duomenų bazės gauti. Tai apima Vartotojo ID kaip parametras, nuskaito vartotojo duomenis iš duomenų bazės ir atsakyme pateikia rezultatus JSON formatu.

3. Apibrėžkite PUT metodą

Sukurkite pirkimo maršrutą, kad atnaujintumėte saugomus duomenis duomenų bazėje.

@app.route("/api/user/", Metodai = ["PUT"])
defupdate_user(Vartotojo ID):
duomenys = request.get_json()
vardas = duomenys["vardas"]
su ryšys:
su connect.cursor() kaip žymeklis:
cursor.execute (UPDATE_USER_BY_ID, (vardas, vartotojo_id))
jeigu cursor.rowcount == 0:
grąžinti jsonify({"klaida": f"Vartotojas su ID {Vartotojo ID} nerastas."}), 404
grąžinti jsonify({"id": Vartotojo ID, "vardas": vardas, "žinutė": f"Vartotojas su ID {Vartotojo ID} atnaujinta“.})
  • The update_user funkcija naudoja vartotojo ID parametrą kaip įvestį ir naudoja jį atnaujinti nurodyto vartotojo vardą duomenų bazėje.
  • Jei naujinimo operacija sėkminga, atsakyme pateikiamas JSON objektas su atnaujintu vartotojo ID, pavadinimu ir sėkmės pranešimu.

4. Apibrėžkite DELETE metodą

Įdiekite trynimo maršrutą, kad ištrintumėte duomenų bazėje saugomus konkretaus vartotojo duomenis.

@app.route("/api/user/", Metodai = ["IŠTRINTI"])
defdelete_user(Vartotojo ID):
su ryšys:
su connect.cursor() kaip žymeklis:
cursor.execute (DELETE_USER_BY_ID, (user_id,))
jeigu cursor.rowcount == 0:
grąžinti jsonify({"klaida": f"Vartotojas su ID {Vartotojo ID} nerastas."}), 404
grąžinti jsonify({"žinutė": f"Vartotojas su ID {Vartotojo ID} ištrintas“.})
  • Šis API maršrutas tvarko konkretaus vartotojo ištrynimo funkciją iš duomenų bazės pagal jo ID. Jei vartotojas nerandamas, jis grąžina 404 būsenos kodą su klaidos pranešimu. Tačiau, jei ištrynimo operacija sėkminga, atsakyme pateikiamas JSON objektas su sėkmės pranešimu.

REST API rašymas naudojant kolbą

Šiame vadove parodyta, kaip naudojant Flask ir Postgres kartu sukurti paprastą CRUD REST API sukurti duomenų bazės ryšį ir vykdyti įvairias SQL užklausas, kad būtų galima nuskaityti ir įrašyti duomenis į a duomenų bazėje. Dabar galite sukurti paprastą REST API, kuri gali atlikti keturias CRUD operacijas, reikalingas bet kurioje žiniatinklio programoje.

Nesvarbu, ar kuriate paprastą tinklaraštį, ar sudėtingą žiniatinklio programą, „Flask“ ir „Postgres“ siūlo galingas funkcijas ir galimybes, kurių reikia norint sukurti tvirtą pagrindinę sistemą. Arba galite naudoti kitas technologijas, pvz., FastAPI ir MongoDB, kad sukurtumėte RESTful API.