CRUD API upravlja podacima kroz četiri osnovne operacije baze podataka: stvaranje, čitanje, ažuriranje i brisanje. Možete stvoriti jednostavan CRUD API samo s Expressom i PostgreSQL bazom podataka.

Započnite stvaranjem Express poslužitelja na koji ćete spojiti PostgreSQL. Zatim izradite CRUD funkcije i spojite ih na API krajnje točke. Nakon što to učinite, moći ćete spojiti Node na PostgreSQL i izvršavati upite baze podataka na svakoj ruti.

Preduvjeti za izgradnju API-ja

Da biste pratili ovaj vodič, trebali biste:

  • Instalirajte Node na svoj stroj.
  • Instalirajte PostgreSQL poslužitelj na svoje računalo.
  • Imati osnovno znanje o Express.js.

Stvorite Express poslužitelj

Do stvoriti Express poslužitelj, započnite stvaranjem novog direktorija i unesite ga:

mkdir bilješke
CD bilješke

Zatim inicijalizirajte npm:

npm init -y

Ova naredba će generirati a paket.json datoteku u mapi s bilješkama. Na kraju instalirajte Express.

npm instalirati izraziti

Napravite novu datoteku pod nazivom index.js i dodajte sljedeći kod.

konst izraziti = zahtijevati("izraziti");
konst app = express();

aplikacija.koristiti(izraziti.urlencoded({
prošireno: pravi
}));

aplikacija.koristiti(izraziti.json())
app.listen (3000, () => console.log("Slušanje na portu 3000"));

Ovo će stvoriti novi poslužitelj koji sluša na portu 3000.

Stvorite PostgreSQL bazu podataka

Izvršite sljedeću naredbu u psql naredbenom retku za stvaranje PostgreSQL baze podataka pod nazivom notedb.

postgres=# STVARANJE BAZE PODATAKA notedb;

Pokrenite ovu naredbu za popis svih Postgres baza podataka i provjerite jeste li kreirali notedb bazu podataka:

postgres=# \l

Povežite se s bazom podataka

Prvo najprije, povežite svoju Node aplikaciju s PostgreSQL poslužiteljem. Možete koristiti modul node-Postgres.

Pokrenite sljedeće da biste ga instalirali putem npm-a:

npm instalirati str

Kao dobra praksa, povežite se s bazom podataka u zasebnoj datoteci.

Napravite novu datoteku pod nazivom db.js i dodajte sljedeće.

konst {Klijent} = zahtijevati("str");
konst { korisnik, host, baza podataka, lozinka, port } = zahtijevati("./dbConfig");

konst klijent = novi Klijent({
korisnik,
domaćin,
baza podataka,
zaporka,
luka,
});

klijent.Spojiti();
modul.izvozi = klijent;

Ovdje izvozite niz veze koji ćete koristiti za komunikaciju s bazom podataka. Imajte na umu da čitate postavke veze s bazom podataka iz konfiguracijske datoteke koja se zove dbConfig.js. Stoga izradite dbConfig.js i dodajte mu sljedeće podatke.

modul.izvozi = {
korisnik: "{dbUser}",
domaćin: "{dbHost}",
baza podataka: "zabilježenob",
zaporka: "{dbPassword}",
luka: 5432,
};

Ne zaboravite zamijeniti detalje baze podataka svojim lokalnim vrijednostima.

Napravite PostgreSQL tablicu

U naredbenom retku psql stvorite tablicu pod nazivom notes. Za početak, spojite se na notedb bazu podataka koristeći \c naredbu.

postgres=# \c zabilježenob

Zatim kreirajte tablicu u povezanoj bazi podataka pomoću naredbe CREATE TABLE.

notedb=# CREATE TABLE bilješke (
ID SERIJSKI PRIMARNI KLJUČ,
bilješka VARCHAR(255)
);

Ova tablica je prilično jednostavna. Ima samo ID koji je automatski generirani primarni ključ i tekstualno polje pod nazivom note.

Napravite bilješku

Umjesto izvođenja CRUD operacija u rutama, stvorite funkcije koje će komunicirati s bazom podataka u zasebnoj datoteci.

Napravite pomoćnu datoteku pod nazivom pomagač.js i uvezite objekt veze iz db.js.

konst klijent = zahtijevati("./db");

Upotrijebite sljedeći kôd za stvaranje funkcije createNote().

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

if (!note) {
bacanjeGreška("Pošalji bilješku u tijelo zahtjeva");
}

klijent.upit(
"UMETNUTIU bilješke (bilješka) VRIJEDNOSTI ($1)",
[Bilješka],
(pogreška, podaci) => {
res.status(201).json({
greška: ništavan,
poruka: "Stvorena nova bilješka",
});
}
);
} ulov (pogreška) {
res.status(500).json({
greška: greška.poruka,
poruka: "Nije uspjelo stvoritinovi Bilješka",
});
}
};

Ova funkcija prvo provjerava je li tijelo zahtjeva uključilo bilješku. Ako bilješke nema, javlja se pogreška.

Za izradu bilješke funkcija koristi klauzulu INSERT. Vraća JSON objekt koji sadrži nultu poruku o pogrešci i poruku o uspjehu ako je uspješan.

Preuzmite sve bilješke

Da biste dobili sve bilješke iz tablice, koristite klauzulu SELECT *.

konst getNotes = (req, res) => {
probati {
klijent.upit("SELECT * FROM bilješke", (pogreška, podaci) => {
ako (greška) bacanje griješiti;

res.status(200).json({
pogriješiti: ništavan,
bilješke: podaci.redovi,
});
});
} ulov (pogreška) {
res.status(500).json({
pogriješiti: greška.poruka,
bilješke: ništavan,
});
}
};

getNotes() šalje polje notes u objektu odgovora ako je upit uspješan.

Dobijte bilješku po ID-u

API će također imati krajnju točku koja vraća bilješku prema ID-u. U helper.js dodajte funkciju getNoteById().

konst getNoteById = (req, res) => {
probati {
konst { id } = req.params;
klijent.upit("SELECT * FROM notes WHERE id=$1", [id], (pogreška, podaci) => {
ako (greška) bacanje griješiti;
res.status(200).json({
pogriješiti: ništavan,
Bilješka: podaci.redovi[0],
});
});
} ulov (pogreška) {
res.status(500).json({
pogriješiti: pogriješiti.poruka,
Bilješka: ništavan,
});
}
};

Ova funkcija će vratiti JSON objekt koji sadrži bilješku i objekt pogreške.

Ažurirajte bilješku prema ID-u

Za ažuriranje bilješke potrebna vam je bilješka i ID te bilješke. Dobit ćete bilješku iz tijela zahtjeva i ID iz URL-a.

Funkcija updateNoteById() koristi klauzulu UPDATE za ažuriranje postojeće bilješke novom bilješkom.

konst updateNoteById = (req, res) => {
probati {
konst { id } = req.params;
konst { note } = req.body;
klijent.upit(
"AŽURIRAJ bilješke SET bilješka = $1GDJEiskaznica = $2",
[napomena, id],
(pogreška, podaci) => {
ako (greška) bacanje griješiti;

res.status(201).json({
pogriješiti: ništavan,
poruka: "Ažurirana bilješka",
});
}
);
} ulov (pogreška) {
res.status(500).json({
pogriješiti: greška.poruka,
poruka: "Ažuriranje bilješke nije uspjelo",
});
}
};

Ova funkcija vraća poruku o uspjehu ako je tablica ažurirana i poruku o pogrešci ako nije.

Izbriši bilješku prema ID-u

Za brisanje bilješke prema ID-u iz tablice koristite sljedeći kod.

konst deleteNote = (req, res) => {
probati {
konst { id } = req.params;
klijent.upit("DELETE FROM notes WHERE id=$1", [id], (pogreška, podaci) => {
ako (greška) bacanje griješiti;

res.status(200).json({
greška: ništavan,
poruka: "Napomena izbrisana",
});
});
} ulov (pogreška) {
res.status(500).json({
greška: greška.poruka,
poruka: "Brisanje bilješke nije uspjelo",
});
}
};

Sada kada ste izradili sve CRUD funkcije, izvezite ih.

U helper.js dodajte sljedeće.

modul.izvozi = { createNote, getNotes, getNoteById, updateNoteById, deleteNote };

Vi ćete ih uvesti index.js prilikom izrade API krajnjih točaka.

Stvorite API rute

Posljednji korak je stvaranje API krajnjih točaka index.js za svaku od CRUD operacija.

Započnite uvozom datoteke helper.js.

konst db = zahtijevati("./pomoćnik")

Zatim izradite svaku krajnju točku.

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 za ažuriranje vaše baze podataka

Kada završite, možete provjeriti radi li vaš API korištenjem REST klijenta poput Postmana ili pisanjem jediničnih testova. Trebali biste biti u mogućnosti osigurati da svih pet krajnjih točaka radi kako očekujete.

Također možete pregledavati i upravljati podacima koje ste dodali u bazu pomoću alata pgAdmin. To je GUI aplikacija koja olakšava administraciju baze podataka i interakciju s PostgreSQL poslužiteljima.