CRUD API haldab andmeid nelja põhilise andmebaasitoimingu kaudu: loomine, lugemine, värskendamine ja kustutamine. Saate luua lihtsa CRUD API lihtsalt Expressi ja PostgreSQL andmebaasiga.

Alustage Expressi serveri loomisega, millega ühendate PostgreSQL-i. Seejärel looge CRUD-funktsioonid ja ühendage need API lõpp-punktidega. Kui olete seda teinud, saate ühendada Node'i PostgreSQL-iga ja teha igal marsruudil andmebaasipäringuid.

API loomise eeltingimused

Selle õpetuse järgimiseks peaksite:

  • Installige Node oma masinasse.
  • Installige oma arvutisse PostgreSQL-server.
  • Omama algteadmisi Express.js.

Looge Express server

To luua Express server, alustage uue kataloogi loomisega ja sisestage see:

mkdir märgib
cd märkmeid

Seejärel lähtestage npm:

npm init -y

See käsk genereerib a package.json fail märkmete kaustas. Lõpuks installige Express.

npm installida väljendada

Looge uus fail nimega index.js ja lisage järgmine kood.

konst väljendada = nõuda("ekspress");
konst rakendus = express();

rakendus.kasutage(väljendada.urlencoded({
pikendatud: tõsi
}));

rakendus.kasutage(väljendada.json())
app.listen (3000, () => console.log("Kuulamine pordist 3000"));

See loob uue serveri, mis kuulab porti 3000.

Looge PostgreSQL-i andmebaas

Käivitage psql käsureal järgmine käsk, et luua PostgreSQL-i andmebaas nimega notedb.

postgres=# LOO ANDMEBAAS noteb;

Käivitage see käsk loetlege kõik Postgresi andmebaasid ja kontrollige, kas lõite notedb andmebaasi:

postgres=# \l

Ühendage andmebaasiga

Esimesed asjad kõigepealt, ühendage oma Node'i rakendus PostgreSQL-i serveriga. Võite kasutada sõlme-Postgresi moodulit.

Selle npm-i kaudu installimiseks käivitage järgmine:

npm installida lk

Hea tava kohaselt ühendage andmebaas eraldi failis.

Looge uus fail nimega db.js ja lisage järgmine.

konst { Klient } = nõuda("lk");
konst { kasutaja, host, andmebaas, parool, port} = nõuda("./dbConfig");

konst klient = uus Klient({
kasutaja,
võõrustaja,
andmebaas,
parool,
sadam,
});

klient.ühendage();
moodul.eksporti = klient;

Siin ekspordite ühendusstringi, mida kasutate andmebaasiga suhtlemiseks. Pange tähele, et loete andmebaasi ühenduse sätteid konfiguratsioonifailist nimega dbConfig.js. Seetõttu looge dbConfig.js ja lisage sellele järgmised andmed.

moodul.eksporti = {
kasutaja: "{dbUser}",
host: "{dbHost}",
andmebaas: "märkisb",
parool: "{dbPassword}",
port: 5432,
};

Ärge unustage asendada andmebaasi üksikasjad oma kohalike väärtustega.

Looge PostgreSQL-i tabel

Looge psql-i käsureal tabel nimega märkused. Alustuseks looge ühendus notedb andmebaasiga, kasutades käsku \c.

postgres=# \c märkisb

Järgmisena looge ühendatud andmebaasis tabel, kasutades käsku CREATE TABLE.

märkisb=# LOO TABEL märkmed (
ID SERIAL PRIMARY KEY,
märkus VARCHAR(255)
);

See tabel on üsna lihtne. Sellel on ainult ID, mis on automaatselt genereeritud primaarvõti, ja tekstiväli nimega märkus.

Loo märkus

Selle asemel, et teha marsruutidel CRUD toiminguid, looge funktsioonid, mis suhtlevad andmebaasiga eraldi failis.

Looge abifail nimega helper.js ja importige ühendusobjekt andmebaasist db.js.

konst klient = nõuda(./db");

Funktsiooni createNote() loomiseks kasutage järgmist koodi.

konst createNote = (req, res) => {
proovi {
konst {märkus} = req.body;

if (!märkus) {
viskamaViga("Saada teade sisse taotluse organ");
}

klient.päring(
"LISAINTO märkmed (märkus) VÄÄRTUSED ($1)",
[Märge],
(err, andmed) => {
res.status(201).json({
viga: null,
sõnum: "Loodi uus märkus",
});
}
);
} püüda (viga) {
res.status(500).json({
viga: viga.sõnum,
teade: "Ebaõnnestus luuauus Märge",
});
}
};

See funktsioon kontrollib esmalt, kas päringu keha sisaldas märkust. Kui märge puudub, annab see veateate.

Märkme loomiseks kasutab funktsioon INSERT-klauslit. See tagastab JSON-objekti, mis sisaldab nullveateadet ja edu korral eduteadet.

Hankige kõik märkmed

Tabelist kõigi märkmete saamiseks kasutage SELECT * klauslit.

konst getNotes = (req, res) => {
proovi {
client.query("SELECT * Märkmetest", (err, data) => {
kui (viga) viskama eksima;

res.status(200).json({
viga: null,
märkmeid: andmeid.rida,
});
});
} püüda (viga) {
res.status(500).json({
eks: viga.sõnum,
märgib: null,
});
}
};

getNotes() saadab päringu õnnestumisel märkuste massiivi vastuseobjektis.

Hankige märge ID-ga

API-l on ka lõpp-punkt, mis tagastab märkme ID järgi. Lisage faili helper.js funktsioon getNoteById().

konst getNoteById = (req, res) => {
proovi {
konst { id } = req.params;
client.query("SELECT * FROM märkmetest WHERE id=$1", [id], (err, data) => {
kui (viga) viskama eksima;
res.status(200).json({
viga: null,
Märge: andmeid.rida[0],
});
});
} püüda (viga) {
res.status(500).json({
eks: eks.sõnum,
Märge: null,
});
}
};

See funktsioon tagastab JSON-objekti, mis sisaldab märkust ja veaobjekti.

Värskendage märkust ID järgi

Märkme värskendamiseks vajate märget ja selle märkme ID-d. Märkuse saate päringu sisust ja ID URL-ist.

Funktsioon updateNoteById() kasutab UPDATE klauslit olemasoleva märkme värskendamiseks uue märkmega.

konst updateNoteById = (req, res) => {
proovi {
konst { id } = req.params;
konst {märkus} = req.body;
klient.päring(
"VÄRSKENDAMINE märkmeid SET märkus = $1KUSid = $2",
[märkus, id],
(err, andmed) => {
kui (viga) viskama eksima;

res.status(201).json({
viga: null,
sõnum: "Uuendatud märkus",
});
}
);
} püüda (viga) {
res.status(500).json({
eks: viga.sõnum,
sõnum: "Märkme värskendamine ebaõnnestus",
});
}
};

See funktsioon tagastab eduteate, kui tabelit värskendatakse, ja veateate, kui seda ei tehta.

Kustuta märge ID järgi

Märkme ID alusel tabelist kustutamiseks kasutage järgmist koodi.

konst deleteNote = (req, res) => {
proovi {
konst { id } = req.params;
client.query("DELETE FROM märkmetest WHERE id=$1", [id], (err, data) => {
kui (viga) viskama eksima;

res.status(200).json({
viga: null,
sõnum: "Märkus kustutatud",
});
});
} püüda (viga) {
res.status(500).json({
viga: viga.sõnum,
sõnum: "Märkme kustutamine ebaõnnestus",
});
}
};

Nüüd, kui olete loonud kõik CRUD-funktsioonid, eksportige need.

Lisage faili helper.js järgmine.

moodul.eksporti = { CreateNote, getNotes, getNoteById, updateNoteById, deleteNote };

Te impordite need sisse index.js API lõpp-punktide loomisel.

Looge API marsruute

Viimane samm on API lõpp-punktide loomine index.js iga CRUD-operatsiooni jaoks.

Alustage faili helper.js importimisega.

konst db = nõuda("./helper")

Järgmisena looge iga lõpp-punkt.

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 oma andmebaasi värskendamiseks

Kui olete lõpetanud, saate kontrollida, kas teie API töötab, kasutades REST-klienti (nt Postman) või kirjutades ühikuteste. Peaksite tagama, et kõik viis lõpp-punkti töötavad ootuspäraselt.

Samuti saate vaadata ja hallata andmebaasi lisatud andmeid pgAdmini tööriista abil. See on GUI-rakendus, mis muudab andmebaasi haldamise ja PostgreSQL-i serveritega suhtlemise lihtsaks.