CRUD API valdo duomenis per keturias pagrindines duomenų bazės operacijas: kurti, skaityti, atnaujinti ir ištrinti. Galite sukurti paprastą CRUD API naudodami tik Express ir PostgreSQL duomenų bazę.

Pradėkite kurdami Express serverį, prie kurio prijungsite PostgreSQL. Tada sukurkite CRUD funkcijas ir prijunkite jas prie API galinių taškų. Kai tai padarysite, galėsite prijungti Node prie PostgreSQL ir atlikti duomenų bazės užklausas kiekviename maršrute.

Būtinos API kūrimo sąlygos

Jei norite tęsti šią mokymo programą, turėtumėte:

  • Įdiekite „Node“ savo kompiuteryje.
  • Įdiekite PostgreSQL serverį savo kompiuteryje.
  • Turėti pagrindinių žinių apie Express.js.

Sukurkite Express serverį

Į sukurti Express serverį, pradėkite sukurdami naują katalogą ir įvesdami jį:

mkdir pažymi
cd Pastabos

Tada inicijuokite npm:

npm init -y

Ši komanda sugeneruos a package.json failą užrašų aplanke. Galiausiai įdiekite „Express“.

npm diegti išreikšti

Sukurkite naują failą pavadinimu index.js ir pridėkite šį kodą.

konst išreikšti = 
instagram viewer
reikalauti(„išreikšti“);
konst programa = express ();

programėlė.naudoti(išreikšti.urlencoded({
pratęstas: tiesa
}));

programėlė.naudoti(išreikšti.json())
app.klausytis (3000, () => console.log("Klausymas per prievadą 3000"));

Taip bus sukurtas naujas serveris, klausantis 3000 prievado.

Sukurkite PostgreSQL duomenų bazę

Vykdykite šią komandą psql komandų eilutėje, kad sukurtumėte PostgreSQL duomenų bazę, pavadintą notedb.

postgres=# KURTI DUOMENŲ BAZĘ noteb;

Vykdykite šią komandą išvardyti visas Postgres duomenų bazes ir patikrinkite, ar sukūrėte notedb duomenų bazę:

postgres=# \l

Prisijunkite prie duomenų bazės

Visų pirmą, prijunkite savo Node programą prie PostgreSQL serverio. Galite naudoti mazgo-Postgres modulį.

Vykdykite šiuos veiksmus, kad įdiegtumėte jį per npm:

npm diegti psl

Kaip gera praktika, prisijunkite prie duomenų bazės atskirame faile.

Sukurkite naują failą pavadinimu db.js ir pridėkite toliau nurodytus dalykus.

konst {Klientas} = reikalauti("pg");
konst { vartotojas, priegloba, duomenų bazė, slaptažodis, prievadas} = reikalauti(./dbConfig");

konst klientas = naujas Klientas ({
Vartotojas,
šeimininkas,
duomenų bazė,
Slaptažodis,
uostas,
});

klientas.Prisijungti();
modulis.eksportas = klientas;

Čia eksportuojate ryšio eilutę, kurią naudosite ryšiui su duomenų baze. Atminkite, kad skaitote duomenų bazės ryšio parametrus iš konfigūracijos failo, vadinamo dbConfig.js. Todėl sukurkite dbConfig.js ir pridėkite prie jo šiuos duomenis.

modulis.eksportas = {
Vartotojas: "{dbUser}",
šeimininkas: "{dbHost}",
duomenų bazė: "pažymėjob",
Slaptažodis: "{dbPassword}",
prievadas: 5432,
};

Nepamirškite pakeisti duomenų bazės informacijos savo vietinėmis reikšmėmis.

Sukurkite PostgreSQL lentelę

Psql komandų eilutėje sukurkite lentelę pavadinimu pastabos. Norėdami pradėti, prisijunkite prie notedb duomenų bazės naudodami komandą \c.

postgres=# \c pažymėjob

Tada sukurkite lentelę prijungtoje duomenų bazėje naudodami komandą CREATE TABLE.

pažymėjob=# KURTI LENTELĖS užrašus (
ID SERIAL PIRMINIS RAKTAS,
pastaba VARCHAR(255)
);

Ši lentelė yra gana paprasta. Jame yra tik ID, kuris yra automatiškai sugeneruotas pirminis raktas, ir teksto laukas, vadinamas pastaba.

Sukurkite pastabą

Užuot atlikę CRUD operacijas maršrutuose, sukurkite funkcijas, kurios sąveikaus su duomenų baze atskirame faile.

Sukurkite pagalbinį failą pavadinimu pagalbininkas.js ir importuoti ryšio objektą iš db.js.

konst klientas = reikalauti(./db");

Naudokite šį kodą, kad sukurtumėte funkciją CreateNote().

konst CreateNote = (req, res) => {
bandyti {
konst { pastaba } = req.body;

if (! pastaba) {
mestiKlaida(„Siųsti pastabą in prašymo įstaiga“);
}

klientas.klausimas(
"ĮDĖTIĮ pastabos (pastaba) VERTYBĖS ($1)",
[pastaba],
(klaida, duomenys) => {
res.statusas(201).json({
klaida: nulinis,
žinutė: "Sukurtas naujas užrašas",
});
}
);
} sugauti (klaida) {
res.statusas(500).json({
klaida: klaida.pranešimas,
pranešimas: „Nepavyko sukurtinaujas pastaba“,
});
}
};

Ši funkcija pirmiausia patikrina, ar užklausos turinys įtraukė pastabą. Jei užrašo nėra, rodoma klaida.

Norėdami sukurti pastabą, funkcija naudoja INSERT sąlygą. Jis grąžina JSON objektą su nuliu klaidos pranešimu ir sėkmės pranešimu, jei pavyks.

Gaukite visas pastabas

Norėdami gauti visas pastabas iš lentelės, naudokite sąlygą SELECT *.

konst getNotes = (req, res) => {
bandyti {
client.query("PASIRINKTI * IŠ užrašų", (klaida, duomenys) => {
jeigu (klaida) mesti klysti;

res.statusas(200).json({
klaida: nulinis,
Pastabos: duomenis.eilutes,
});
});
} sugauti (klaida) {
res.statusas(500).json({
klysti: klaida.pranešimas,
Pastabos: nulinis,
});
}
};

getNotes() siunčia pastabų masyvą atsakymo objekte, jei užklausa sėkminga.

Gaukite pastabą pagal ID

API taip pat turės galinį tašką, kuris grąžina pastabą pagal ID. Prie helper.js pridėkite funkciją getNoteById().

konst getNoteById = (req, res) => {
bandyti {
konst { id } = req.params;
client.query("SELECT * FROM užrašai WHERE id=$1", [id], (err, data) => {
jeigu (klaida) mesti klysti;
res.statusas(200).json({
klaida: nulinis,
pastaba: duomenis.eilutes[0],
});
});
} sugauti (klaida) {
res.statusas(500).json({
klysti: klysti.pranešimas,
pastaba: nulinis,
});
}
};

Ši funkcija grąžins JSON objektą, kuriame yra pastaba ir klaidos objektas.

Atnaujinkite pastabą pagal ID

Norint atnaujinti užrašą, reikia užrašo ir to užrašo ID. Gausite pastabą iš užklausos turinio ir ID iš URL.

Funkcija updateNoteById() naudoja sąlygą UPDATE, kad atnaujintų esamą pastabą nauju.

konst updateNoteById = (req, res) => {
bandyti {
konst { id } = req.params;
konst { pastaba } = req.body;
klientas.klausimas(
"ATNAUJINTI Pastabos NUSTATYTI pastaba = $1KURid = $2",
[pastaba, ID],
(klaida, duomenys) => {
jeigu (klaida) mesti klysti;

res.statusas(201).json({
klaida: nulinis,
žinutė: "Atnaujintas užrašas",
});
}
);
} sugauti (klaida) {
res.statusas(500).json({
klysti: klaida.pranešimas,
žinutė: "Nepavyko atnaujinti pastabos",
});
}
};

Ši funkcija grąžina sėkmės pranešimą, jei lentelė atnaujinama, ir klaidos pranešimą, jei ne.

Ištrinti pastabą pagal ID

Norėdami ištrinti pastabą pagal ID iš lentelės, naudokite šį kodą.

konst deleteNote = (req, res) => {
bandyti {
konst { id } = req.params;
client.query("IŠTRINTI IŠ užrašų, WHERE id=$1", [id], (err, data) => {
jeigu (klaida) mesti klysti;

res.statusas(200).json({
klaida: nulinis,
žinutė: "Pastaba ištrinta",
});
});
} sugauti (klaida) {
res.statusas(500).json({
klaida: klaida.pranešimas,
žinutė: "Nepavyko ištrinti užrašo",
});
}
};

Dabar, kai sukūrėte visas CRUD funkcijas, eksportuokite jas.

Prie helper.js pridėkite toliau pateiktą informaciją.

modulis.eksportas = { CreateNote, getNotes, getNoteById, updateNoteById, deleteNote };

Jūs juos importuosite index.js kurdami API galinius taškus.

Sukurkite API maršrutus

Paskutinis žingsnis yra sukurti API galinius taškus index.js kiekvienai CRUD operacijai.

Pradėkite importuodami helper.js failą.

konst db = reikalauti(./pagalbininkas")

Tada sukurkite kiekvieną galinį tašką.

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 duomenų bazei atnaujinti

Baigę galite patikrinti, ar jūsų API veikia, naudodami REST klientą, pvz., „Postman“, arba rašydami vienetų testus. Turėtumėte užtikrinti, kad visi penki galiniai taškai veiktų taip, kaip tikitės.

Taip pat galite peržiūrėti ir tvarkyti duomenis, kuriuos įtraukėte į duomenų bazę, naudodami pgAdmin įrankį. Tai GUI programa, kuri leidžia lengvai administruoti duomenų bazę ir bendrauti su PostgreSQL serveriais.