Eine CRUD-API verwaltet Daten durch vier grundlegende Datenbankoperationen: Erstellen, Lesen, Aktualisieren und Löschen. Sie können eine einfache CRUD-API nur mit Express und einer PostgreSQL-Datenbank erstellen.

Erstellen Sie zunächst einen Express-Server, mit dem Sie PostgreSQL verbinden. Erstellen Sie dann die CRUD-Funktionen und verbinden Sie sie mit API-Endpunkten. Sobald Sie dies getan haben, können Sie Node mit PostgreSQL verbinden und Datenbankabfragen auf jeder Route durchführen.

Voraussetzungen für das Erstellen der API

Um diesem Tutorial zu folgen, sollten Sie:

  • Installieren Sie Node auf Ihrem Computer.
  • Installieren Sie den PostgreSQL-Server auf Ihrem Computer.
  • Besitzen Sie Grundkenntnisse bzgl Express.js.

Erstellen Sie einen Express-Server

Zu Erstellen Sie einen Express-Server, erstellen Sie zunächst ein neues Verzeichnis und geben Sie es ein:

mkdir-Notizen
CD Anmerkungen

Dann npm initialisieren:

npm init -y

Dieser Befehl generiert eine Paket.json Datei im Notizenordner. Installieren Sie abschließend Express.

instagram viewer
npm Installieren ausdrücken

Erstellen Sie eine neue Datei mit dem Namen index.js und fügen Sie den folgenden Code hinzu.

konst ausdrücken = benötigen("ausdrücken");
konst app = ausdrücken ();

App.verwenden(ausdrücken.urlencodiert({
erweitert: Stimmt
}));

App.verwenden(ausdrücken.json())
app.listen (3000, () => Konsole.log ("Hören auf Port 3000"));

Dadurch wird ein neuer Server erstellt, der Port 3000 überwacht.

Erstellen Sie eine PostgreSQL-Datenbank

Führen Sie den folgenden Befehl in der psql-Eingabeaufforderung aus, um eine PostgreSQL-Datenbank namens „notedb“ zu erstellen.

postgres=# DATENBANK ERSTELLEN notiertb;

Führen Sie diesen Befehl aus listet alle Postgres-Datenbanken auf und überprüfen Sie, ob Sie die notedb-Datenbank erstellt haben:

postgres=# \l

Verbinden Sie sich mit der Datenbank

Das wichtigste zuerst, Verbinden Sie Ihre Node-Anwendung mit dem PostgreSQL-Server. Sie können das node-Postgres-Modul verwenden.

Führen Sie Folgendes aus, um es über npm zu installieren:

npm Installieren S

Stellen Sie als bewährte Methode eine Verbindung zur Datenbank in einer separaten Datei her.

Erstellen Sie eine neue Datei mit dem Namen db.js und füge folgendes hinzu.

konst { Kunde } = benötigen("pg");
konst { Benutzer, Host, Datenbank, Passwort, Port } = benötigen("./dbConfig");

konst Kunde = Neu Klient({
Benutzer,
Gastgeber,
Datenbank,
Passwort,
Hafen,
});

Klient.verbinden();
Modul.Exporte = Kunde;

Hier exportieren Sie die Verbindungszeichenfolge, die Sie zur Kommunikation mit der Datenbank verwenden. Beachten Sie, dass Sie die Datenbankverbindungseinstellungen aus einer Konfigurationsdatei mit dem Namen lesen dbConfig.js. Erstellen Sie daher dbConfig.js und fügen Sie die folgenden Daten hinzu.

Modul.Exporte = {
Benutzer: "{dbUser}",
Gastgeber: "{dbHost}",
Datenbank: "notiertb",
Passwort: "{dbPasswort}",
Port: 5432,
};

Denken Sie daran, die Datenbankdetails durch Ihre eigenen lokalen Werte zu ersetzen.

Erstellen Sie eine PostgreSQL-Tabelle

Erstellen Sie in der psql-Eingabeaufforderung eine Tabelle mit dem Namen „Notizen“. Stellen Sie zunächst mit dem Befehl \c eine Verbindung zur notedb-Datenbank her.

postgres=# \c notiertb

Erstellen Sie als Nächstes mit dem Befehl CREATE TABLE eine Tabelle in der verbundenen Datenbank.

notiertb=# CREATE TABLE-Notizen (
ID SERIELLER PRIMÄRSCHLÜSSEL,
Hinweis VARCHAR(255)
);

Diese Tabelle ist ganz einfach. Es hat nur eine ID, die ein automatisch generierter Primärschlüssel ist, und ein Textfeld namens Notiz.

Erstellen Sie eine Notiz

Anstatt die CRUD-Vorgänge in den Routen auszuführen, erstellen Sie Funktionen, die mit der Datenbank interagieren, in einer separaten Datei.

Erstellen Sie eine Hilfsdatei namens helper.js und importieren Sie das Verbindungsobjekt aus db.js.

konst Kunde = benötigen("./db");

Verwenden Sie den folgenden Code, um die createNote()-Funktion zu erstellen.

konst createNote = (req, res) => {
Versuchen {
konst { note } = req.body;

if (!note) {
WurfFehler("Hinweis senden in Anfragetext");
}

Klient.Anfrage(
"EINFÜGUNGHINEIN Notizen (Anmerkung) WERTE ($1)",
[Hinweis],
(äh, Daten) => {
res.Status(201).json({
Error: Null,
Botschaft: "Neue Notiz erstellt",
});
}
);
} Fang (Error) {
res.Status(500).json({
Error: Error.Botschaft,
Meldung: „Gescheitert schaffenNeu Hinweis",
});
}
};

Diese Funktion prüft zunächst, ob der Anforderungstext eine Notiz enthält. Wenn die Notiz fehlt, wird ein Fehler ausgegeben.

Um eine Notiz zu erstellen, verwendet die Funktion die INSERT-Klausel. Es gibt ein JSON-Objekt zurück, das eine Null-Fehlermeldung und bei Erfolg eine Erfolgsmeldung enthält.

Holen Sie sich alle Notizen

Um alle Notizen aus der Tabelle zu erhalten, verwenden Sie die Klausel SELECT *.

konst getNotes = (req, res) => {
Versuchen {
client.query("WÄHLEN Sie * AUS Notizen", (ähm, Daten) => {
wenn (irren) Wurf irren;

res.Status(200).json({
irren: Null,
Anmerkungen: Daten.Reihen,
});
});
} Fang (Error) {
res.Status(500).json({
irren: Error.Botschaft,
Anmerkungen: Null,
});
}
};

getNotes() sendet das Notes-Array im Response-Objekt, wenn die Abfrage erfolgreich ist.

Notiz nach ID abrufen

Die API wird auch einen Endpunkt haben, der eine Notiz nach ID zurückgibt. Fügen Sie in helper.js eine Funktion getNoteById() hinzu.

konst getNoteById = (req, res) => {
Versuchen {
konst {id} = req.params;
client.query("SELECT * FROM notizen WHERE id=$1", [id], (err, Daten) => {
wenn (irren) Wurf irren;
res.Status(200).json({
irren: Null,
Hinweis: Daten.Reihen[0],
});
});
} Fang (Error) {
res.Status(500).json({
irren: irren.Botschaft,
Hinweis: Null,
});
}
};

Diese Funktion gibt ein JSON-Objekt zurück, das die Notiz und ein Fehlerobjekt enthält.

Notiz nach ID aktualisieren

Um eine Notiz zu aktualisieren, benötigen Sie eine Notiz und die ID dieser Notiz. Sie erhalten den Hinweis aus dem Anfragetext und die ID aus der URL.

Die Funktion updateNoteById() verwendet die UPDATE-Klausel, um eine vorhandene Notiz mit einer neuen Notiz zu aktualisieren.

konst updateNoteById = (req, res) => {
Versuchen {
konst {id} = req.params;
konst { note } = req.body;
Klient.Anfrage(
"AKTUALISIEREN Anmerkungen EINSTELLEN Hinweis = $1WOIch würde = $2",
[Anmerkung, ID],
(äh, Daten) => {
wenn (irren) Wurf irren;

res.Status(201).json({
irren: Null,
Botschaft: "Hinweis aktualisiert",
});
}
);
} Fang (Error) {
res.Status(500).json({
irren: Error.Botschaft,
Botschaft: "Hinweis konnte nicht aktualisiert werden",
});
}
};

Diese Funktion gibt eine Erfolgsmeldung zurück, wenn die Tabelle aktualisiert wird, und eine Fehlermeldung, wenn dies nicht der Fall ist.

Notiz nach ID löschen

Verwenden Sie den folgenden Code, um eine Notiz nach ID aus der Tabelle zu löschen.

konst deleteNote = (req, res) => {
Versuchen {
konst {id} = req.params;
client.query("LÖSCHEN VON Notizen WO id=$1", [id], (err, Daten) => {
wenn (irren) Wurf irren;

res.Status(200).json({
Error: Null,
Botschaft: "Hinweis gelöscht",
});
});
} Fang (Error) {
res.Status(500).json({
Error: Error.Botschaft,
Botschaft: "Notiz konnte nicht gelöscht werden",
});
}
};

Nachdem Sie alle CRUD-Funktionen erstellt haben, exportieren Sie sie.

Fügen Sie in helper.js Folgendes hinzu.

Modul.Exporte = { createNote, getNotes, getNoteById, updateNoteById, deleteNote };

Sie werden sie importieren index.js beim Erstellen der API-Endpunkte.

Erstellen Sie API-Routen

Der letzte Schritt besteht darin, API-Endpunkte in zu erstellen index.js für jede der CRUD-Operationen.

Beginnen Sie mit dem Importieren der Datei helper.js.

konst db = benötigen("./Helfer")

Erstellen Sie als Nächstes jeden Endpunkt.

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);

Eine REST-API zum Aktualisieren Ihrer Datenbank

Wenn Sie fertig sind, können Sie überprüfen, ob Ihre API funktioniert, indem Sie einen REST-Client wie Postman verwenden oder Unit-Tests schreiben. Sie sollten sicherstellen können, dass alle fünf Endpunkte wie erwartet funktionieren.

Sie können die Daten, die Sie der Datenbank hinzugefügt haben, auch mit dem pgAdmin-Tool überprüfen und verwalten. Es handelt sich um eine GUI-Anwendung, die die Datenbankverwaltung und die Interaktion mit PostgreSQL-Servern vereinfacht.