Een CRUD API beheert gegevens via vier basisdatabasebewerkingen: maken, lezen, bijwerken en verwijderen. U kunt een eenvoudige CRUD API maken met alleen Express en een PostgreSQL-database.

Begin met het maken van een Express-server waarmee u PostgreSQL verbindt. Maak vervolgens de CRUD-functies en koppel ze aan API-eindpunten. Zodra je dit hebt gedaan, kun je Node verbinden met PostgreSQL en databasequery's uitvoeren op elke route.

Vereisten voor het bouwen van de API

Om deze zelfstudie te volgen, moet u:

  • Installeer Node op uw computer.
  • Installeer de PostgreSQL-server op uw computer.
  • Een basiskennis hebben van Express.js.

Een Express-server maken

Tot een Express-server maken, begin met het maken van een nieuwe map en voer deze in:

mkdir notities
CD notities

Initialiseer vervolgens npm:

npm init -y

Deze opdracht genereert een pakket.json bestand in de notitiemap. Installeer tot slot Express.

npm installeren uitdrukken

Maak een nieuw bestand met de naam index.js en voeg de volgende code toe.

const
instagram viewer
express = vereisen("uitdrukken");
const app = express();

app.gebruiken(uitdrukken.urlencoded({
verlengd: WAAR
}));

app.gebruiken(uitdrukken.json())
app.luisteren (3000, () => console.log("Luisteren op poort 3000"));

Dit zal een nieuwe server creëren die luistert op poort 3000.

Een PostgreSQL-database maken

Voer de volgende opdracht uit in de psql-opdrachtprompt om een ​​PostgreSQL-database te maken met de naam notesb.

postgres=# MAAK DATABASE genoteerdb;

Voer deze opdracht uit om een lijst van alle Postgres-databases en controleer of je de genoteerdeb-database hebt gemaakt:

postgres=# \l

Verbinding maken met de database

Eerste dingen eerst, verbind uw Node-toepassing met de PostgreSQL-server. U kunt de module node-Postgres gebruiken.

Voer het volgende uit om het via npm te installeren:

npm installeren pg

Maak als goede gewoonte verbinding met de database in een apart bestand.

Maak een nieuw bestand met de naam db.js en voeg het volgende toe.

const { Klant } = vereisen("pag");
const { gebruiker, host, database, wachtwoord, poort } = vereisen("./dbConfig");

const klant = nieuwe Cliënt({
gebruiker,
gastheer,
databank,
wachtwoord,
haven,
});

cliënt.aansluiten();
module.exporteert = klant;

Hier exporteert u de verbindingsreeks die u gaat gebruiken om met de database te communiceren. Merk op dat u de instellingen voor de databaseverbinding leest vanuit een configuratiebestand met de naam dbConfig.js. Maak daarom dbConfig.js en voeg de volgende gegevens eraan toe.

module.exporteert = {
gebruiker: "{dbGebruiker}",
gastheer: "{dbHost}",
databank: "opgemerktb",
wachtwoord: "{dbWachtwoord}",
poort: 5432,
};

Vergeet niet om de databasedetails te vervangen door uw eigen lokale waarden.

Een PostgreSQL-tabel maken

Maak in de psql-opdrachtprompt een tabel met de naam notities. Maak om te beginnen verbinding met de genoteerdeb-database met behulp van het \c-commando.

postgres=# \c opgemerktb

Maak vervolgens een tabel in de verbonden database met behulp van de opdracht CREATE TABLE.

opgemerktb=# MAAK TAFEL notities (
ID SERILE PRIMAIRE SLEUTEL,
opmerking VARCHAR(255)
);

Deze tafel is vrij eenvoudig. Het heeft alleen een ID die een automatisch gegenereerde primaire sleutel is en een tekstveld met de naam note.

Maak een notitie

In plaats van de CRUD-bewerkingen in de routes uit te voeren, maakt u in een apart bestand functies die met de database werken.

Maak een helperbestand met de naam helper.js en importeer het verbindingsobject van db.js.

const klant = vereisen("./db");

Gebruik de volgende code om de functie createNote() te maken.

const createNote = (req, res) => {
proberen {
const { opmerking } = req.body;

als (!opmerking) {
gooienFout("Verstuur notitie in verzoekinstantie");
}

cliënt.vraag(
"INSERTNAAR BINNEN notities (noot) WAARDEN ($1)",
[Opmerking],
(fout, gegevens) => {
res.toestand(201).json({
fout: nul,
bericht: "Nieuwe notitie gemaakt",
});
}
);
} vangst (fout) {
res.toestand(500).json({
fout: fout.bericht,
bericht: "Kan niet creërennieuwe Opmerking",
});
}
};

Deze functie controleert eerst of de aanvraaginstantie een notitie heeft opgenomen. Als de notitie afwezig is, wordt er een fout gegenereerd.

Om een ​​notitie te maken, gebruikt de functie de INSERT-component. Het retourneert een JSON-object met een null-foutbericht en een succesbericht als dit is gelukt.

Alle notities ophalen

Gebruik de SELECT * -clausule om alle notities uit de tabel te krijgen.

const getNotes = (req, res) => {
proberen {
klant.query("KIES * UIT notities", (fout, gegevens) => {
als (fout) gooien fout;

res.toestand(200).json({
fout: nul,
notities: gegevens.rijen,
});
});
} vangst (fout) {
res.toestand(500).json({
foutje: fout.bericht,
opmerkingen: nul,
});
}
};

getNotes() verzendt de notes-array in het response-object als de query succesvol is.

Ontvang notitie op ID

De API heeft ook een eindpunt dat een notitie per ID retourneert. Voeg in helper.js een functie getNoteById() toe.

const getNoteById = (req, res) => {
proberen {
const { id } = vereiste parameters;
klant.query("SELECTEER * UIT notities WHERE id=$1", [id], (fout, gegevens) => {
als (fout) gooien fout;
res.toestand(200).json({
fout: nul,
Opmerking: gegevens.rijen[0],
});
});
} vangst (fout) {
res.toestand(500).json({
foutje: foutje.bericht,
Opmerking: nul,
});
}
};

Deze functie retourneert een JSON-object dat de notitie en een foutobject bevat.

Notitie bijwerken op ID

Om een ​​notitie bij te werken, heb je een notitie en de ID van die notitie nodig. U krijgt de notitie van de aanvraagtekst en de ID van de URL.

De functie updateNoteById() gebruikt de clausule UPDATE om een ​​bestaande notitie bij te werken met een nieuwe notitie.

const updateNoteById = (req, res) => {
proberen {
const { id } = vereiste parameters;
const { opmerking } = req.body;
cliënt.vraag(
"UPDATE notities SET opmerking = $1WAARID kaart = $2",
[opmerking, id],
(fout, gegevens) => {
als (fout) gooien fout;

res.toestand(201).json({
fout: nul,
bericht: "Bijgewerkte opmerking:",
});
}
);
} vangst (fout) {
res.toestand(500).json({
foutje: fout.bericht,
bericht: "Kan notitie niet updaten",
});
}
};

Deze functie retourneert een succesbericht als de tabel is bijgewerkt en een foutbericht als dit niet het geval is.

Notitie verwijderen op ID

Gebruik de volgende code om een ​​notitie op ID uit de tabel te verwijderen.

const deleteNote = (req, res) => {
proberen {
const { id } = vereiste parameters;
klant.query("VERWIJDER UIT notities WHERE id=$1", [id], (fout, gegevens) => {
als (fout) gooien fout;

res.toestand(200).json({
fout: nul,
bericht: "Notitie verwijderd",
});
});
} vangst (fout) {
res.toestand(500).json({
fout: fout.bericht,
bericht: "Kan notitie niet verwijderen",
});
}
};

Nu u alle CRUD-functies hebt gemaakt, kunt u ze exporteren.

Voeg in helper.js het volgende toe.

module.exporteert = { createNote, getNotes, getNoteById, updateNoteById, deleteNote};

Je importeert ze in index.js bij het maken van de API-eindpunten.

API-routes maken

De laatste stap is het maken van API-eindpunten in index.js voor elk van de CRUD-bewerkingen.

Begin met het importeren van het helper.js-bestand.

const db = vereisen("./helper")

Maak vervolgens elk eindpunt.

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

Een REST API om uw database bij te werken

Als u klaar bent, kunt u controleren of uw API werkt door een REST-client zoals Postman te gebruiken of door unit-tests te schrijven. U moet ervoor kunnen zorgen dat de vijf eindpunten allemaal werken zoals u verwacht.

U kunt de gegevens die u aan de database hebt toegevoegd ook inspecteren en beheren met behulp van de pgAdmin-tool. Het is een GUI-toepassing die het gemakkelijk maakt om databasebeheer uit te voeren en te communiceren met PostgreSQL-servers.