Ένα CRUD API διαχειρίζεται δεδομένα μέσω τεσσάρων βασικών λειτουργιών βάσης δεδομένων: δημιουργία, ανάγνωση, ενημέρωση και διαγραφή. Μπορείτε να δημιουργήσετε ένα απλό CRUD API μόνο με το Express και μια βάση δεδομένων PostgreSQL.

Ξεκινήστε δημιουργώντας έναν διακομιστή Express στον οποίο θα συνδέσετε την PostgreSQL. Στη συνέχεια, δημιουργήστε τις συναρτήσεις CRUD και συνδέστε τις στα τελικά σημεία του API. Μόλις το κάνετε, θα μπορείτε να συνδέσετε το Node με την PostgreSQL και να εκτελέσετε ερωτήματα βάσης δεδομένων σε κάθε διαδρομή.

Προϋποθέσεις για τη δημιουργία του API

Για να ακολουθήσετε αυτό το σεμινάριο, θα πρέπει:

  • Εγκαταστήστε το Node στον υπολογιστή σας.
  • Εγκαταστήστε τον διακομιστή PostgreSQL στον υπολογιστή σας.
  • Να έχουν βασικές γνώσεις για Express.js.

Δημιουργήστε έναν Express Server

Προς την δημιουργήστε έναν διακομιστή Express, ξεκινήστε δημιουργώντας έναν νέο κατάλογο και εισάγοντάς τον:

σημειώσεις mkdir
CD σημειώσεις

Στη συνέχεια, αρχικοποιήστε το npm:

npm init -y

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

instagram viewer
npm εγκαθιστώ εξπρές

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

συνθ εκφράζω = απαιτώ("εξπρές");
συνθ app = express();

εφαρμογή.χρήση(εξπρές.urlencoded({
επεκτάθηκε: αληθής
}));

εφαρμογή.χρήση(εξπρές.json())
app.listen (3000, () => console.log("Ακρόαση στη θύρα 3000"));

Αυτό θα δημιουργήσει έναν νέο διακομιστή που ακούει στη θύρα 3000.

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

Εκτελέστε την ακόλουθη εντολή στη γραμμή εντολών psql για να δημιουργήσετε μια βάση δεδομένων PostgreSQL που ονομάζεται notedb.

postgres=# ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ notedb;

Εκτελέστε αυτήν την εντολή στο απαριθμήστε όλες τις βάσεις δεδομένων Postgres και ελέγξτε ότι δημιουργήσατε τη βάση δεδομένων notedb:

postgres=# \l

Συνδεθείτε στη βάση δεδομένων

Καταρχάς, συνδέστε την εφαρμογή Node στον διακομιστή PostgreSQL. Μπορείτε να χρησιμοποιήσετε τη λειτουργική μονάδα node-Postgres.

Εκτελέστε τα εξής για να το εγκαταστήσετε μέσω npm:

npm εγκαθιστώ σελ

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

Δημιουργήστε ένα νέο αρχείο που ονομάζεται db.js και προσθέστε τα παρακάτω.

συνθ { Πελάτης } = απαιτώ("σελ.");
συνθ { χρήστης, κεντρικός υπολογιστής, βάση δεδομένων, κωδικός πρόσβασης, θύρα } = απαιτώ("./dbConfig");

συνθ πελάτης = νέος Πελάτης({
χρήστης,
πλήθος,
βάση δεδομένων,
Κωδικός πρόσβασης,
Λιμάνι,
});

πελάτης.συνδέω-συωδεομαι();
μονάδα μέτρησης.εξαγωγές = πελάτης;

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

μονάδα μέτρησης.εξαγωγές = {
χρήστης: "{dbUser}",
πλήθος: "{dbHost}",
βάση δεδομένων: "notedb",
Κωδικός πρόσβασης: "{dbPassword}",
λιμάνι: 5432,
};

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

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

Στη γραμμή εντολών psql, δημιουργήστε έναν πίνακα που ονομάζεται σημειώσεις. Αρχικά, συνδεθείτε στη βάση δεδομένων notedb χρησιμοποιώντας την εντολή \c.

postgres=# \c notedb

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

notedb=# ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ σημειώσεων (
Αναγνωριστικό ΣΕΙΡΙΚΟ ΚΥΡΙΟ ΚΛΕΙΔΙ,
σημείωση VARCHAR(255)
);

Αυτός ο πίνακας είναι αρκετά απλός. Έχει μόνο ένα αναγνωριστικό που είναι ένα πρωτεύον κλειδί που δημιουργείται αυτόματα και ένα πεδίο κειμένου που ονομάζεται σημείωση.

Δημιουργήστε μια Σημείωση

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

Δημιουργήστε ένα βοηθητικό αρχείο που ονομάζεται βοηθός.js και εισάγετε το αντικείμενο σύνδεσης από το db.js.

συνθ πελάτης = απαιτώ("./db");

Χρησιμοποιήστε τον παρακάτω κώδικα για να δημιουργήσετε τη συνάρτηση createNote().

συνθ createNote = (απαιτ., ρε.) => {
προσπαθήστε {
συνθ { note } = req.body;

αν (!σημείωση) {
βολήΛάθος("Αποστολή σημείωσης σε φορέας αιτήματος");
}

πελάτης.ερώτηση(
"ΕΙΣΑΓΕΤΕΣΕ σημειώσεις (σημείωση) ΑΞΙΕΣ ($1)",
[Σημείωση],
(σφάλμα, δεδομένα) => {
res.κατάσταση(201).json({
λάθος: μηδενικό,
μήνυμα: "Δημιουργήθηκε νέα σημείωση",
});
}
);
} σύλληψη (λάθος) {
res.κατάσταση(500).json({
λάθος: λάθος.μήνυμα,
μήνυμα: "Απέτυχε δημιουργώνέος Σημείωση",
});
}
};

Αυτή η λειτουργία ελέγχει πρώτα εάν το σώμα αιτήματος περιλάμβανε μια σημείωση. Εάν η σημείωση απουσιάζει, βγάζει σφάλμα.

Για να δημιουργήσετε μια σημείωση, η συνάρτηση χρησιμοποιεί τον όρο INSERT. Επιστρέφει ένα αντικείμενο JSON που περιέχει ένα μηδενικό μήνυμα σφάλματος και ένα μήνυμα επιτυχίας εάν είναι επιτυχές.

Λήψη όλων των σημειώσεων

Για να λάβετε όλες τις σημειώσεις από τον πίνακα, χρησιμοποιήστε τον όρο SELECT *.

συνθ getNotes = (απαιτ., ρε.) => {
προσπαθήστε {
client.query("ΕΠΙΛΟΓΗ * ΑΠΟ σημειώσεις", (σφάλμα, δεδομένα) => {
αν (πλανώμαι) βολή πλανώμαι;

res.κατάσταση(200).json({
πλανώμαι: μηδενικό,
σημειώσεις: δεδομένα.σειρές,
});
});
} σύλληψη (λάθος) {
res.κατάσταση(500).json({
πλανώμαι: λάθος.μήνυμα,
σημειώσεις: μηδενικό,
});
}
};

Η getNotes() στέλνει τον πίνακα σημειώσεων στο αντικείμενο απόκρισης εάν το ερώτημα είναι επιτυχές.

Λήψη σημείωσης με ταυτότητα

Το API θα έχει επίσης ένα τελικό σημείο που επιστρέφει μια σημείωση ανά αναγνωριστικό. Στο helper.js, προσθέστε μια συνάρτηση getNoteById().

συνθ getNoteById = (απαιτ., ρε.) => {
προσπαθήστε {
συνθ { id } = req.params;
client.query("ΕΠΙΛΟΓΗ * ΑΠΟ σημειώσεις WHERE id=$1", [id], (err, data) => {
αν (πλανώμαι) βολή πλανώμαι;
res.κατάσταση(200).json({
πλανώμαι: μηδενικό,
Σημείωση: δεδομένα.σειρές[0],
});
});
} σύλληψη (λάθος) {
res.κατάσταση(500).json({
πλανώμαι: πλανώμαι.μήνυμα,
Σημείωση: μηδενικό,
});
}
};

Αυτή η συνάρτηση θα επιστρέψει ένα αντικείμενο JSON που περιέχει τη σημείωση και ένα αντικείμενο σφάλματος.

Ενημέρωση Σημείωσης κατά αναγνωριστικό

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

Η συνάρτηση updateNoteById() χρησιμοποιεί τον όρο UPDATE για να ενημερώσει μια υπάρχουσα σημείωση με μια νέα σημείωση.

συνθ updateNoteById = (απαιτ., ρε.) => {
προσπαθήστε {
συνθ { id } = req.params;
συνθ { note } = req.body;
πελάτης.ερώτηση(
"ΕΚΣΥΓΧΡΟΝΙΖΩ σημειώσεις ΣΕΙΡΑ σημείωση = $1ΟΠΟΥταυτότητα = $2",
[σημείωση, id],
(σφάλμα, δεδομένα) => {
αν (πλανώμαι) βολή πλανώμαι;

res.κατάσταση(201).json({
πλανώμαι: μηδενικό,
μήνυμα: "Ενημερωμένη σημείωση",
});
}
);
} σύλληψη (λάθος) {
res.κατάσταση(500).json({
πλανώμαι: λάθος.μήνυμα,
μήνυμα: "Η ενημέρωση της σημείωσης απέτυχε",
});
}
};

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

Διαγραφή Σημείωσης κατά ID

Για να διαγράψετε μια σημείωση κατά αναγνωριστικό από τον πίνακα, χρησιμοποιήστε τον ακόλουθο κωδικό.

συνθ διαγραφήΣημείωση = (απαιτ., υπό.) => {
προσπαθήστε {
συνθ { id } = req.params;
client.query("ΔΙΑΓΡΑΦΗ ΑΠΟ σημειώσεις WHERE id=$1", [id], (err, data) => {
αν (πλανώμαι) βολή πλανώμαι;

res.κατάσταση(200).json({
λάθος: μηδενικό,
μήνυμα: "Η σημείωση διαγράφηκε",
});
});
} σύλληψη (λάθος) {
res.κατάσταση(500).json({
λάθος: λάθος.μήνυμα,
μήνυμα: "Η διαγραφή της σημείωσης απέτυχε",
});
}
};

Τώρα που έχετε δημιουργήσει όλες τις συναρτήσεις CRUD, εξάγετε τις.

Στο helper.js, προσθέστε τα ακόλουθα.

μονάδα μέτρησης.εξαγωγές = {createNote, getNotes, getNoteById, updateNoteById, deleteNote };

Θα τα εισαγάγετε index.js κατά τη δημιουργία των τελικών σημείων API.

Δημιουργία Διαδρομών API

Το τελευταίο βήμα είναι η δημιουργία τελικών σημείων API index.js για καθεμία από τις πράξεις CRUD.

Ξεκινήστε εισάγοντας το αρχείο helper.js.

συνθ db = απαιτώ("./βοηθός")

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

app.get("/notes", db.getNotes);
app.get("/note/:id", db.getNoteById);
app.put("/note/:id", db.updateNoteById);
app.post("/note", db.createNote);
app.delete("/note/:id", db.deleteNote);

Ένα REST API για την ενημέρωση της βάσης δεδομένων σας

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

Μπορείτε επίσης να επιθεωρήσετε και να διαχειριστείτε τα δεδομένα που προσθέσατε στη βάση δεδομένων χρησιμοποιώντας το εργαλείο pgAdmin. Είναι μια εφαρμογή GUI που διευκολύνει τη διαχείριση της βάσης δεδομένων και την αλληλεπίδραση με διακομιστές PostgreSQL.