Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Η δημιουργία ενός REST API είναι συχνά μια μηχανική εργασία, που περιλαμβάνει πολύ σχεδιασμό λέβητα και προγραμματισμό κανονικού. Ευτυχώς, εργαλεία όπως το FastAPI μπορούν να ανακουφίσουν πολλές από τις κουραστικές λεπτομέρειες.

Χρησιμοποιώντας το FastAPI, μπορείτε να δημιουργήσετε γρήγορα ένα αποτελεσματικό, πλήρες REST API για την εφαρμογή σας CRUD. Με το MongoDB ως πηγή δεδομένων, αυτό το σεμινάριο θα σας καθοδηγήσει προς τη ρύθμιση του δικού σας API σε χρόνο μηδέν.

Τι είναι το FastAPI;

FastAPI είναι ένα γρήγορο και ανοιχτού κώδικα διαδικτυακό πλαίσιο Python για τη δημιουργία API. Παρέχει ενσωματωμένη υποστήριξη για ασύγχρονα αιτήματα, αυτόματη επικύρωση δεδομένων και αυτόματη τεκμηρίωση των τελικών σημείων API.

Τα πλεονεκτήματα του FastAPI έναντι άλλων πλαισίων Python

  • Το FastAPI είναι σχετικά πιο γρήγορο από άλλα πλαίσια όπως το Django και το Flask. Αυτό συμβαίνει επειδή το FastAPI δημιουργεί πάνω από το asyncio, μια ασύγχρονη βιβλιοθήκη εισόδου/εξόδου για την Python που μπορεί να επεξεργαστεί ταυτόχρονα αιτήματα πιο γρήγορα.
    instagram viewer
  • Το FastAPI παρέχει έναν καθαρό και απλό τρόπο δημιουργίας API με ελάχιστη προσπάθεια, καθώς απαιτεί λιγότερο κώδικα από το Flask ή το Django.
  • Τέλος, το FastAPI διευκολύνει τη δημιουργία τεκμηρίωσης για τα τελικά σημεία. Χρησιμοποιεί το Swagger για την παραγωγή τεκμηρίωσης που μπορείτε να χρησιμοποιήσετε για να δοκιμάσετε τελικά σημεία εκτελώντας αιτήματα και προβάλλοντας απαντήσεις.

Ρυθμίστε μια βάση δεδομένων MongoDB

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

Στη συνέχεια, χρησιμοποιώντας το εγκατεστημένο εργαλείο διεπαφής χρήστη γραφικών MongoDB, Compass, δημιουργήστε μια σύνδεση βάσης δεδομένων. Κάντε κλικ στο Νέα σύνδεση κουμπί και παρέχετε το URI σύνδεσης για να δημιουργήσετε μια σύνδεση με τον διακομιστή MongoDB που εκτελείται τοπικά.

Τέλος, δημιουργήστε μια νέα βάση δεδομένων και μια νέα συλλογή για τη διατήρηση των δοκιμαστικών σας δεδομένων API.

Ρυθμίστε έναν διακομιστή FastAPI

Χρησιμοποιώντας ένα τερματικό, δημιουργήστε έναν φάκελο έργου και εισαγάγετε αυτόν τον νέο κατάλογο.

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

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

python -- έκδοση

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

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

Στη συνέχεια, δημιουργήστε ένα εικονικό περιβάλλον που ονομάζεται "venv" στον τρέχοντα κατάλογο σας:

virtualenv venv

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

# Σε Unix ή MacOS: 
πηγή venv/bin/activate

# Στα Windows:
 .\venv\Scripts\ενεργοποίηση

Αφού διαμορφώσετε το εικονικό περιβάλλον, εγκαταστήστε τα πακέτα FastAPI, PyMongo και Uvicorn.

pip install fastapi pymongo uvicorn

Το PyMongo είναι μια βιβλιοθήκη βασισμένη σε Python για εργασία με τη βάση δεδομένων MongoDB. Παρέχει ένα API που υποστηρίζει όλες τις δυνατότητες του MongoDB και σας επιτρέπει να αλληλεπιδράτε με το MongoDB χωρίς να χρειάζεται να γράφετε ακατέργαστα ερωτήματα MongoDB.

Ο Uvicorn, από την άλλη πλευρά, είναι ένας ασύγχρονος διακομιστής ιστού που βασίζεται στη λειτουργική μονάδα Python asyncio. Το κύριο χαρακτηριστικό του είναι η επαναφόρτωση των διακομιστών FastAPI εν κινήσει. Η χρήση του Uvicorn είναι παρόμοια με δουλεύοντας με το Nodemon.

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

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

από fastapi εισαγωγή FastAPI
app = FastAPI()

@app.get("/")
ασυγχρονισμόςdefΣπίτι():
ΕΠΙΣΤΡΟΦΗ {"μήνυμα": "Γειά σου Κόσμε"}

Τέλος, εκτελέστε την παρακάτω εντολή για να περιστρέψετε τον διακομιστή ανάπτυξης. Το Uvicorn θα εξυπηρετήσει την αίτησή σας στη θύρα 8000.

διακομιστής uvicon: app --reload

Προχωρήστε και δείτε την απόκριση του διακομιστή στο πρόγραμμα περιήγησής σας στο http://localhost: 8000.

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

Τώρα δημιουργήστε το REST API που υλοποιεί τις μεθόδους CRUD (δημιουργία, ανάγνωση, ενημέρωση και διαγραφή). Στον ριζικό κατάλογο του φακέλου του έργου σας, δημιουργήστε τέσσερις φακέλους: config, μοντέλα, διαδρομές και σχήματα.

├── διαμόρφωση
├── μοντέλα
├── διαδρομές
├── σχήματα
└── server.py

1. Διαμορφώστε τη σύνδεση βάσης δεδομένων

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

από pymongo εισαγωγή MongoClient
db_connection = MongoClient("mongodb://localhost: 27017")
db = db_connection.database_name
συλλογή = db["collection_name"]
  • Χρησιμοποιήστε τη μέθοδο MongoClient() για να δημιουργήσετε μια σύνδεση σε μια βάση δεδομένων MongoDB. Λαμβάνει μια συμβολοσειρά URI σύνδεσης ως όρισμα που καθορίζει τον κεντρικό υπολογιστή και τη θύρα του διακομιστή MongoDB.
  • Οι δύο μεταβλητές καθορίζουν τη βάση δεδομένων και τη συλλογή στον διακομιστή MongoDB που πρέπει να έχει πρόσβαση ο διακομιστής.

2. Ορίστε ένα μοντέλο δεδομένων

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

Στον κατάλογο μοντέλου, δημιουργήστε ένα νέο αρχείο, user_model.py, και προσθέστε τον παρακάτω κώδικα.

από πυδατική εισαγωγή BaseModel 

τάξηΧρήστης(BaseModel):
όνομα: str
ρόλος: στρ

  • Ο παραπάνω κώδικας δημιουργεί μια κλάση που ονομάζεται User, η οποία είναι μια υποκλάση της κλάσης BaseModel από τη βιβλιοθήκη Pydantic. Η κλάση Χρήστης έχει δύο πεδία, όνομα και ρόλο με τους τύπους δεδομένων τους σε συμβολοσειρές.
  • Μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη Pydantic με το FastAPI για να δημιουργήσετε μοντέλα δεδομένων. Μπορείτε επίσης να το χρησιμοποιήσετε για να επικυρώσετε δεδομένα, να τα σειριοποιήσετε (JSON σε Python) και να τα αποσειριοποιήσετε (Python σε JSON).

3. Ορίστε ένα σχήμα δεδομένων

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

defuser_serializer(χρήστης) -> dict:
ΕΠΙΣΤΡΟΦΗ {
'ταυτότητα':str (χρήστης["_ταυτότητα"]),
'όνομα':χρήστης["όνομα"],
'ρόλος':χρήστης["ρόλος"]
}

defusers_serializer(χρήστες) -> λίστα:
ΕΠΙΣΤΡΟΦΗ [user_serializer (χρήστης) Για χρήστης σε χρήστες]

4. Καθορίστε τις διαδρομές API

Τέλος, ορίστε τις διαδρομές για τις διάφορες λειτουργίες CRUD.

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

Προσθήκη δεδομένων με τη μέθοδο ανάρτησης

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

από fastapi εισαγωγή APIRouter
από μοντέλα.user_model εισαγωγή Χρήστης
από schemas.user_schema εισαγωγή users_serializer
από bson εισαγωγή ObjectId
από config.db εισαγωγή συλλογή

χρήστης = APIRouter()

@user.post("/")
ασυγχρονισμόςdefcreate_user(χρήστης: Χρήστης):
_id = collection.insert_one (dict (χρήστης))
χρήστης = users_serializer (collection.find({"_ταυτότητα": _id.inserted_id}))
ΕΠΙΣΤΡΟΦΗ {"κατάσταση": "Εντάξει","δεδομένα": χρήστης}

  • Το FastAPI παρέχει τη μέθοδο APIRouter() που ορίζει ένα αντικείμενο δρομολογητή που παρέχει μια διεπαφή για την υποβολή αιτημάτων API σε έναν διακομιστή.
  • Καθορίστε μια διαδρομή ανάρτησης που δημιουργεί ένα νέο αντικείμενο χρήστη στη βάση δεδομένων εισάγοντας τα δεδομένα στη συλλογή μετά τη σειριοποίησή της. Στη συνέχεια, αποθηκεύστε και περάστε το inserted_id για να βρείτε τα συσχετισμένα δεδομένα στη συλλογή και, τέλος, επιστρέψτε μια κατάσταση "Ok" με τα δεδομένα στην απάντηση, εάν το αίτημα ανάρτησης είναι επιτυχές.
  • Οι μέθοδοι insert_one και find ορίζονται από τον πελάτη PyMongo.

Τώρα, προσθέστε τον παρακάτω κώδικα στο server.py για να αρχικοποιήσετε τις διαδρομές.

από διαδρομές.user_routes εισαγωγή χρήστης
app.include_router (χρήστης)

Προχωρήστε και δοκιμάστε τη διαδρομή ανάρτησης στο πρόγραμμα περιήγησής σας χρησιμοποιώντας το εργαλείο Swagger UI API που παρέχεται από το FastAPI.

Διαβάστε δεδομένα με τη μέθοδο λήψης

Αφού ορίσετε τη διαδρομή μετά και αρχικοποιήσετε τις διαδρομές, ορίστε τις υπόλοιπες διαδρομές.

@user.get("/")
ασυγχρονισμόςdeffind_all_users():
χρήστες = users_serializer (collection.find())
ΕΠΙΣΤΡΟΦΗ {"κατάσταση": "Εντάξει","δεδομένα": χρήστες}

@user.get("/{id}")
ασυγχρονισμόςdefget_one_user(id: str):
χρήστης = users_serializer (collection.find({"_ταυτότητα": ObjectId (id)}))
ΕΠΙΣΤΡΟΦΗ {"κατάσταση": "Εντάξει","δεδομένα": χρήστης}

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

Ενημέρωση δεδομένων με τη μέθοδο Put

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

@user.put("/{id}")
ασυγχρονισμόςdefupdate_user(αναγνωριστικό: str, χρήστης: Χρήστης):
collection.find_one_and_update(
{
"_ταυτότητα": Αναγνωριστικό αντικειμένου (αναγνωριστικό)
},
{
"$set": dict (χρήστης)
})
χρήστης = users_serializer (collection.find({"_ταυτότητα": ObjectId (id)}))
ΕΠΙΣΤΡΟΦΗ {"κατάσταση": "Εντάξει","δεδομένα": χρήστης}

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

Διαγραφή δεδομένων με τη μέθοδο Delete

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

@user.delete("/{id}")
ασυγχρονισμόςdefdelete_user(id: str):
collection.find_one_and_delete({"_ταυτότητα": ObjectId (id)})
χρήστες = users_serializer (collection.find())
ΕΠΙΣΤΡΟΦΗ {"κατάσταση": "Εντάξει","δεδομένα": []}

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

Δημιουργήστε REST API με το FastAPI

Το FastAPI παρέχει έναν εξαιρετικό τρόπο δημιουργίας βολικών backend Python web API. Τα ενσωματωμένα εργαλεία του για ενσωμάτωση βάσεων δεδομένων και αυτόματη παραγωγή API κάνουν τη διαδικασία απλή.

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