Μάθετε πώς να δημιουργείτε ένα RESTful API χρησιμοποιώντας το Flask και το Postgres, επιτρέποντας την απρόσκοπτη ανταλλαγή δεδομένων μεταξύ της εφαρμογής σας και των εξωτερικών συστημάτων σας.

Οι διεπαφές προγραμματισμού εφαρμογών (API) αποτελούν κρίσιμο μέρος της δημιουργίας και της σύνδεσης διαφορετικών συστημάτων, επιτρέποντας στις εφαρμογές σας να επικοινωνούν και να ανταλλάσσουν δεδομένα με άλλες υπηρεσίες.

Ενώ η ανάπτυξη backend περιλαμβάνει περισσότερα από τη σύνταξη API - καλύπτει επίσης τη συγγραφή επιχειρηματικής λογικής από την πλευρά του διακομιστή, το σχεδιασμό αποτελεσματικού συστήματος αρχιτεκτονικές και άλλες βασικές λειτουργίες, διαβάστε παρακάτω για να μάθετε πώς να δημιουργείτε ένα απλό CRUD REST API με το Flask (ένα ελαφρύ πλαίσιο Python) και το Postgres βάση δεδομένων.

Χρήση του Flask για τη δημιουργία Backend API

Φλάσκα είναι ελαφρύ Πλαίσιο Python που παρέχει μια σειρά από δυνατότητες για την απλοποίηση της σύνταξης backend API για πελάτες ιστού που έχουν γραφτεί χρησιμοποιώντας διαφορετικές τεχνολογίες όπως το React και το Angular.

Μπορείτε να βρείτε τον πηγαίο κώδικα αυτού του έργου σε αυτό Αποθετήριο GitHub.

Αυτός ο οδηγός θα σας καθοδηγήσει στη σύνταξη α REST API που υλοποιεί τις τέσσερις λειτουργίες CRUD: δημιουργία, ανάγνωση, ενημέρωση και διαγραφή για τη διαχείριση δεδομένων χρήστη που είναι αποθηκευμένα σε μια βάση δεδομένων Postgres.

Δημιουργήστε μια βάση δεδομένων Postgres

Για να ξεκινήσετε, κατευθυνθείτε στο ElephantSQL, μια λύση φιλοξενίας βάσης δεδομένων που βασίζεται σε σύννεφο που παρέχει μια πλατφόρμα για τη δημιουργία και τη διαχείριση βάσεων δεδομένων Postgres στο cloud, εγγραφή και σύνδεση στη σελίδα επισκόπησης του λογαριασμού σας.

Κάντε κλικ στο Δημιουργία νέας παρουσίας κουμπί για να δημιουργήσετε μια νέα παρουσία για την εφαρμογή σας.

Δώστε το όνομα της παρουσίας σας και επιλέξτε το δωρεάν πρόγραμμα και, τέλος, επιλέξτε την περιοχή όπου θα φιλοξενηθεί η παρουσία για να ολοκληρώσετε τη διαδικασία εγκατάστασης.

Μόλις δημιουργηθεί το παράδειγμα, μεταβείτε στη σελίδα ρυθμίσεων και αντιγράψτε το URL βάσης δεδομένων, θα το χρησιμοποιήσετε για να δημιουργήσετε μια σύνδεση με τη βάση δεδομένων.

Ρύθμιση διακομιστή Flask

Στο τερματικό σας, δημιουργήστε έναν φάκελο έργου και αλλάξτε τον τρέχοντα κατάλογο σε αυτόν τον νέο φάκελο.

Πριν εγκαταστήσετε το Flask, επιβεβαιώστε ότι εκτελείτε την έκδοση Python 3.6+ στον υπολογιστή σας. Εάν όχι, πρέπει να εγκαταστήσετε την πιο πρόσφατη Πύθων εκδοχή.

python -- έκδοση

Στη συνέχεια, εγκαταστήστε virtualenv, για τη δημιουργία ενός απομονωμένου εικονικού περιβάλλοντος ανάπτυξης.

pip εγκατάσταση virtualenv

Στη συνέχεια, εκτελέστε την παρακάτω εντολή για να δημιουργήσετε ένα εικονικό περιβάλλον.

virtualenv venv

Τέλος, ενεργοποιήστε το εικονικό περιβάλλον.

# Στα Windows: 
.\venv\Scripts\ενεργοποίηση
# Σε Unix ή MacOS:
πηγή venv/bin/activate

Εγκαταστήστε τα απαιτούμενα πακέτα

Στον ριζικό κατάλογο του φακέλου του έργου σας, δημιουργήστε ένα απαιτήσεις.txt αρχείο και προσθέστε αυτά τα πακέτα.

φλάσκα
python-dotenv
psycopg2-δυαδικό

Στη συνέχεια, εγκαταστήστε τα πακέτα.

pip install -r απαιτήσεις.txt

ο psycopg2-δυαδικό είναι μια βιβλιοθήκη Python που λειτουργεί ως ενδιάμεσο λογισμικό, για να σας επιτρέπει να δημιουργείτε συνδέσεις με τη βάση δεδομένων Postgres και να εκτελείτε διάφορες λειτουργίες βάσης δεδομένων.

Τέλος, δημιουργήστε ένα .env αρχείο και επικολλήστε τη διεύθυνση URL της βάσης δεδομένων σας.

DATABASE_URL= URL της βάσης δεδομένων σας

Δημιουργήστε τον διακομιστή Flask

Τέλος, δημιουργήστε ένα app.py αρχείο στον ριζικό κατάλογο και προσθέστε τον παρακάτω κώδικα.

εισαγωγή os 
εισαγωγή psycopg2
από dotenv εισαγωγή load_dotenv
από φλάσκα εισαγωγή Flask, request, jsonify

load_dotenv()

app = Flask (__name__)
url = os.getenv("DATABASE_URL")
σύνδεση = psycopg2.connect (url)

@app.get("/")
defΣπίτι():
ΕΠΙΣΤΡΟΦΗ"Γειά σου Κόσμε"

Αυτός ο κώδικας δημιουργεί μια παρουσία της εφαρμογής Flask. Στη συνέχεια, δημιουργεί μια σύνδεση με τη βάση δεδομένων που καθορίζεται στη συμβολοσειρά URL και, τέλος, ρυθμίζει μια αρχική διαδρομή που επιστρέφει μια συμβολοσειρά ως απάντηση.

Δημιουργήστε το REST API που ενεργοποιεί τις λειτουργίες CRUD

Τώρα, δημιουργήστε το REST API που υλοποιεί τις τέσσερις λειτουργίες CRUD.

Δημιουργήστε έναν πίνακα επίδειξης

Δημιουργήστε έναν πίνακα χρηστών μέσα στη βάση δεδομένων.

Στο αρχείο app.py, προσθέστε τον παρακάτω κώδικα.

CREATE_USERS_TABLE = "ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΑΝ ΔΕΝ ΥΠΑΡΧΕΙ χρήστες (αναγνωριστικό ΣΕΙΡΙΚΟ ΚΥΡΙΟ ΚΛΕΙΔΙ, όνομα ΚΕΙΜΕΝΟ)"

με σύνδεση:
με connection.cursor() όπως και δρομέας:
cursor.execute (CREATE_USERS_TABLE)

  • Αυτός ο κώδικας δημιουργεί έναν νέο πίνακα PostgreSQL που ονομάζεται χρήστες με δύο στήλες.
  • Χρησιμοποιεί τη μέθοδο σύνδεσης psycopg2 για να δημιουργήσει τη σύνδεση με τη βάση δεδομένων και δημιουργεί ένα νέο αντικείμενο δρομέα χρησιμοποιώντας το σύνδεση.δρομέας μέθοδο που χρησιμοποιείται για την εκτέλεση Ερωτήματα SQL.

1. Καθορίστε τη μέθοδο POST

Δημιουργήστε τη διαδρομή ανάρτησης για να προσθέσετε δεδομένα.

INSERT_USER_RETURN_ID = "INSERT INTO users (όνομα) VALUES (%s) RETURNING id;"
@app.route("/api/user", metoda=["POST"])
defcreate_user():
data = request.get_json()
όνομα = δεδομένα["όνομα"]
με σύνδεση:
με connection.cursor() όπως και δρομέας:
cursor.execute (INSERT_USER_RETURN_ID, (όνομα,))
user_id = cursor.fetchone()[0]
ΕΠΙΣΤΡΟΦΗ {"ταυτότητα": ταυτότητα χρήστη, "όνομα": όνομα, "μήνυμα": στ" Χρήστης {όνομα} δημιουργήθηκε."}, 201
  • Η συμβολοσειρά ερωτήματος SQL ορίζει μια πρόταση SQL που θα εκτελεστεί χρησιμοποιώντας το δρομέας.εκτελέστε μέθοδος για να εισαγάγετε μια νέα σειρά με το όνομα ενός χρήστη στο χρήστες' πίνακα στη βάση δεδομένων. Επιστρέφει το αναγνωριστικό χρήστη που δημιουργήθηκε πρόσφατα.
  • ο create_user η συνάρτηση παίρνει ένα όνομα ως παράμετρο για αποθήκευση στη βάση δεδομένων ενώ το δρομέας.ανάκτηση καλείται η μέθοδος για την ανάκτηση του αναγνωριστικού χρήστη που δημιουργήθηκε πρόσφατα. Τέλος, επιστρέφεται ένα λεξικό που περιέχει το αναγνωριστικό και το όνομα του χρήστη που δημιουργήθηκε πρόσφατα, μαζί με ένα μήνυμα που υποδεικνύει ότι ο χρήστης δημιουργήθηκε με επιτυχία.

2. Καθορίστε τη μέθοδο GET

Ορίστε δύο διαδρομές λήψης: μία, για ανάκτηση όλων των δεδομένων στη βάση δεδομένων και δύο, για ανάκτηση συγκεκριμένων δεδομένων από τη βάση δεδομένων με βάση το αναγνωριστικό.

SELECT_ALL_USERS = "ΕΠΙΛΟΓΗ * ΑΠΟ χρήστες;"

@app.route("/api/user", metoda=["GET"])
defget_all_users():
με σύνδεση:
με connection.cursor() όπως και δρομέας:
cursor.execute (SELECT_ALL_USERS)
χρήστες = cursor.fetchall()
αν χρήστες:
αποτέλεσμα = []
Για χρήστης σε χρήστες:
result.append({"ταυτότητα": χρήστης[0], "όνομα": χρήστης[1]})
ΕΠΙΣΤΡΟΦΗ jsonify (αποτέλεσμα)
αλλού:
ΕΠΙΣΤΡΟΦΗ jsonify({"λάθος": f"Οι χρήστες δεν βρέθηκαν."}), 404

@app.route("/api/user/", μεθόδους=["GET"])
defget_user(ταυτότητα χρήστη):
με σύνδεση:
με connection.cursor() όπως και δρομέας:
cursor.execute("ΕΠΙΛΟΓΗ * ΑΠΟ χρήστες WHERE id = %s", (ταυτότητα χρήστη,))
χρήστης = cursor.fetchone()
αν χρήστης:
ΕΠΙΣΤΡΟΦΗ jsonify({"ταυτότητα": χρήστης[0], "όνομα": χρήστης[1]})
αλλού:
ΕΠΙΣΤΡΟΦΗ jsonify({"λάθος": στ" Χρήστης με αναγνωριστικό {ταυτότητα χρήστη} δεν βρέθηκε."}), 404

  • Αυτή η πρώτη διαδρομή API χειρίζεται αιτήματα HTTP GET για την ανάκτηση όλων των χρηστών από τη βάση δεδομένων. Ανακτά όλους τους χρήστες από τη βάση δεδομένων και επιστρέφει τα αποτελέσματα σε μορφή JSON στην απόκριση.
  • Αυτή η δεύτερη διαδρομή API χειρίζεται αιτήματα HTTP GET για την ανάκτηση δεδομένων για έναν συγκεκριμένο χρήστη από τη βάση δεδομένων. Παίρνει στο ταυτότητα χρήστη ως παράμετρος, ανακτά τα δεδομένα του χρήστη από τη βάση δεδομένων και επιστρέφει τα αποτελέσματα σε μορφή JSON στην απόκριση.

3. Καθορίστε τη μέθοδο PUT

Δημιουργήστε τη διαδρομή put για να ενημερώσετε τα αποθηκευμένα δεδομένα στη βάση δεδομένων.

@app.route("/api/user/", μεθόδους=["PUT"])
defupdate_user(ταυτότητα χρήστη):
data = request.get_json()
όνομα = δεδομένα["όνομα"]
με σύνδεση:
με connection.cursor() όπως και δρομέας:
cursor.execute (UPDATE_USER_BY_ID, (όνομα, user_id))
αν cursor.rowcount == 0:
ΕΠΙΣΤΡΟΦΗ jsonify({"λάθος": στ" Χρήστης με αναγνωριστικό {ταυτότητα χρήστη} δεν βρέθηκε."}), 404
ΕΠΙΣΤΡΟΦΗ jsonify({"ταυτότητα": ταυτότητα χρήστη, "όνομα": όνομα, "μήνυμα": στ" Χρήστης με αναγνωριστικό {ταυτότητα χρήστη} ΕΠΙΚΑΙΡΟΠΟΙΗΜΕΝΟ."})
  • ο update_user Η συνάρτηση λαμβάνει την παράμετρο ID χρήστη ως είσοδο και τη χρησιμοποιεί για να ενημερώσει το όνομα του καθορισμένου χρήστη στη βάση δεδομένων.
  • Εάν η λειτουργία ενημέρωσης είναι επιτυχής, επιστρέφει ένα αντικείμενο JSON με το ενημερωμένο αναγνωριστικό χρήστη, το όνομα και ένα μήνυμα επιτυχίας στην απάντηση.

4. Καθορίστε τη μέθοδο DELETE

Εφαρμόστε τη διαδρομή διαγραφής για να διαγράψετε τα αποθηκευμένα δεδομένα ενός συγκεκριμένου χρήστη στη βάση δεδομένων.

@app.route("/api/user/", μεθόδους=["ΔΙΑΓΡΑΦΗ"])
defdelete_user(ταυτότητα χρήστη):
με σύνδεση:
με connection.cursor() όπως και δρομέας:
cursor.execute (DELETE_USER_BY_ID, (user_id,))
αν cursor.rowcount == 0:
ΕΠΙΣΤΡΟΦΗ jsonify({"λάθος": στ" Χρήστης με αναγνωριστικό {ταυτότητα χρήστη} δεν βρέθηκε."}), 404
ΕΠΙΣΤΡΟΦΗ jsonify({"μήνυμα": στ" Χρήστης με αναγνωριστικό {ταυτότητα χρήστη} διαγράφηκε."})
  • Αυτή η διαδρομή API χειρίζεται τη λειτουργία διαγραφής ενός συγκεκριμένου χρήστη από τη βάση δεδομένων με βάση το αναγνωριστικό του. Εάν ο χρήστης δεν βρεθεί, επιστρέφει έναν κωδικό κατάστασης 404 με μήνυμα σφάλματος. Ωστόσο, εάν η λειτουργία διαγραφής είναι επιτυχής, επιστρέφει ένα αντικείμενο JSON με ένα μήνυμα επιτυχίας στην απάντηση.

Γράψιμο των API REST με το Flask

Αυτός ο οδηγός δείχνει πώς να χρησιμοποιήσετε το Flask και το Postgres για να δημιουργήσετε ένα απλό CRUD REST API παράλληλα, πώς για να δημιουργήσετε μια σύνδεση βάσης δεδομένων και να εκτελέσετε διαφορετικά ερωτήματα SQL για ανάγνωση και εγγραφή δεδομένων σε α βάση δεδομένων. Τώρα μπορείτε να δημιουργήσετε ένα απλό REST API που μπορεί να χειριστεί τις τέσσερις λειτουργίες CRUD που απαιτούνται σε οποιαδήποτε εφαρμογή Ιστού.

Είτε φτιάχνετε ένα απλό blog είτε μια πολύπλοκη εφαρμογή Ιστού, το Flask και το Postgres προσφέρουν ισχυρές δυνατότητες και δυνατότητες που απαιτούνται για τη δημιουργία ενός ισχυρού συστήματος υποστήριξης. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε άλλες τεχνολογίες όπως το FastAPI και το MongoDB για να δημιουργήσετε RESTful API.