CRUD API upravlja podatke prek štirih osnovnih operacij baze podatkov: ustvarjanje, branje, posodabljanje in brisanje. Preprost API CRUD lahko ustvarite samo z Expressom in bazo podatkov PostgreSQL.

Začnite z ustvarjanjem strežnika Express, na katerega boste povezali PostgreSQL. Nato ustvarite funkcije CRUD in jih povežite s končnimi točkami API-ja. Ko boste to storili, boste lahko povezali Node s PostgreSQL in izvajali poizvedbe baze podatkov na vsaki poti.

Predpogoji za gradnjo API-ja

Če želite slediti tej vadnici, morate:

  • Namestite Node na vaš računalnik.
  • Namestite strežnik PostgreSQL na vaš računalnik.
  • Imeti osnovno znanje o Express.js.

Ustvarite Express Server

Za ustvarite strežnik Express, začnite tako, da ustvarite nov imenik in ga vnesete:

mkdir opombe
cd opombe

Nato inicializirajte npm:

npm init -y

Ta ukaz bo ustvaril a package.json datoteko v mapi z zapiski. Nazadnje namestite Express.

npm namestite ekspresno

Ustvari novo datoteko z imenom index.js in dodajte naslednjo kodo.

konst izraziti = 
instagram viewer
zahtevati("hitro");
konst app = express();

aplikacija.uporaba(ekspresno.urlencoded({
razširjeno: prav
}));

aplikacija.uporaba(ekspresno.json())
app.listen (3000, () => console.log("Poslušanje na vratih 3000"));

To bo ustvarilo nov strežnik, ki posluša na vratih 3000.

Ustvarite bazo podatkov PostgreSQL

Izvedite naslednji ukaz v ukaznem pozivu psql, da ustvarite bazo podatkov PostgreSQL, imenovano notedb.

postgres=# USTVARI BAZO PODATKOV notedb;

Zaženite ta ukaz za seznam vseh zbirk podatkov Postgres in preverite, ali ste ustvarili bazo podatkov notedb:

postgres=# \l

Povežite se z bazo podatkov

Najprej najprej, povežite svojo aplikacijo Node s strežnikom PostgreSQL. Uporabite lahko modul node-Postgres.

Zaženite naslednje, da ga namestite prek npm:

npm namestite str

Kot dobra praksa se povežite z bazo podatkov v ločeni datoteki.

Ustvari novo datoteko z imenom db.js in dodajte naslednje.

konst {Odjemalec} = zahtevati("str");
konst { uporabnik, gostitelj, baza podatkov, geslo, vrata } = zahtevati("./dbConfig");

konst stranka = novo Odjemalec ({
uporabnik,
gostitelj,
baza podatkov,
geslo,
pristanišče,
});

stranka.poveži();
modul.izvoz = stranka;

Tukaj izvažate povezovalni niz, ki ga boste uporabili za komunikacijo z bazo podatkov. Upoštevajte, da berete nastavitve povezave z bazo podatkov iz konfiguracijske datoteke, imenovane dbConfig.js. Zato ustvarite dbConfig.js in mu dodajte naslednje podatke.

modul.izvoz = {
uporabnik: "{dbUser}",
gostitelj: "{dbHost}",
baza podatkov: "notedb",
geslo: "{dbPassword}",
vrata: 5432,
};

Ne pozabite zamenjati podrobnosti baze podatkov s svojimi lokalnimi vrednostmi.

Ustvarite tabelo PostgreSQL

V ukaznem pozivu psql ustvarite tabelo z imenom notes. Za začetek se povežite z bazo podatkov notedb z ukazom \c.

postgres=# \c notedb

Nato ustvarite tabelo v povezani bazi podatkov z ukazom CREATE TABLE.

notedb=# USTVARI opombe TABLE (
ID SERIJSKI PRIMARNI KLJUČ,
opomba VARCHAR(255)
);

Ta tabela je precej preprosta. Ima samo ID, ki je samodejno ustvarjen primarni ključ, in besedilno polje, imenovano note.

Ustvari opombo

Namesto izvajanja operacij CRUD v smereh ustvarite funkcije, ki bodo sodelovale z bazo podatkov v ločeni datoteki.

Ustvarite pomožno datoteko, imenovano helper.js in uvozite objekt povezave iz db.js.

konst stranka = zahtevati("./db");

Za ustvarjanje funkcije createNote() uporabite naslednjo kodo.

konst createNote = (req, res) => {
poskusi {
konst {opomba} = req.body;

če (!opomba) {
metatiNapaka("Pošlji opombo v telo zahteve");
}

stranka.poizvedba(
"VSTAVIINTO opombe (opomba) VREDNOTE ($1)",
[Opomba],
(napaka, podatki) => {
res.stanje(201).json({
napaka: nič,
sporočilo: "Ustvarjena nova opomba",
});
}
);
} ulov (napaka) {
res.stanje(500).json({
napaka: napaka.sporočilo,
sporočilo: »Ni uspelo ustvaritinovo Opomba",
});
}
};

Ta funkcija najprej preveri, ali je telo zahteve vsebovalo opombo. Če opombe ni, vrže napako.

Za ustvarjanje opombe funkcija uporablja klavzulo INSERT. Vrne objekt JSON, ki vsebuje ničelno sporočilo o napaki in sporočilo o uspehu, če je uspešen.

Pridobite vse opombe

Če želite pridobiti vse opombe iz tabele, uporabite stavek SELECT *.

konst getNotes = (req, res) => {
poskusi {
client.query("IZBERI * IZ zapiskov", (napaka, podatki) => {
če (napaka) metati napaka;

res.stanje(200).json({
napaka: nič,
opombe: podatke.vrstice,
});
});
} ulov (napaka) {
res.stanje(500).json({
napaka: napaka.sporočilo,
opombe: nič,
});
}
};

getNotes() pošlje matriko opomb v objektu odgovora, če je poizvedba uspešna.

Pridobite opombo z ID-jem

API bo imel tudi končno točko, ki vrne opombo glede na ID. V helper.js dodajte funkcijo getNoteById().

konst getNoteById = (req, res) => {
poskusi {
konst { id } = req.params;
client.query("IZBERI * IZ opomb WHERE id=$1", [id], (napaka, podatki) => {
če (napaka) metati napaka;
res.stanje(200).json({
napaka: nič,
Opomba: podatke.vrstice[0],
});
});
} ulov (napaka) {
res.stanje(500).json({
napaka: napaka.sporočilo,
Opomba: nič,
});
}
};

Ta funkcija bo vrnila objekt JSON, ki vsebuje opombo in objekt napake.

Posodobite opombo z ID-jem

Če želite posodobiti zapisek, potrebujete zapisek in ID tega zapiska. Opombo boste prejeli iz telesa zahteve in ID iz URL-ja.

Funkcija updateNoteById() uporablja klavzulo UPDATE za posodobitev obstoječe opombe z novo opombo.

konst updateNoteById = (req, res) => {
poskusi {
konst { id } = req.params;
konst {opomba} = req.body;
stranka.poizvedba(
"NADGRADNJA opombe NASTAVI opomba = $1KJEid = $2",
[opomba, id],
(napaka, podatki) => {
če (napaka) metati napaka;

res.stanje(201).json({
napaka: nič,
sporočilo: "Posodobljena opomba",
});
}
);
} ulov (napaka) {
res.stanje(500).json({
napaka: napaka.sporočilo,
sporočilo: "Zapiska ni bilo mogoče posodobiti",
});
}
};

Ta funkcija vrne sporočilo o uspehu, če je tabela posodobljena, in sporočilo o napaki, če ni.

Izbriši opombo po ID-ju

Za brisanje opombe po ID-ju iz tabele uporabite naslednjo kodo.

konst deleteNote = (req, res) => {
poskusi {
konst { id } = req.params;
client.query("DELETE FROM notes WHERE id=$1", [id], (napaka, podatki) => {
če (napaka) metati napaka;

res.stanje(200).json({
napaka: nič,
sporočilo: "Opomba izbrisana",
});
});
} ulov (napaka) {
res.stanje(500).json({
napaka: napaka.sporočilo,
sporočilo: "Opombe ni bilo mogoče izbrisati",
});
}
};

Zdaj, ko ste ustvarili vse funkcije CRUD, jih izvozite.

V helper.js dodajte naslednje.

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

Uvozili jih boste index.js pri ustvarjanju končnih točk API-ja.

Ustvarite API poti

Zadnji korak je ustvariti končne točke API-ja index.js za vsako od operacij CRUD.

Začnite z uvozom datoteke helper.js.

konst db = zahtevati("./pomočnik")

Nato ustvarite vsako končno točko.

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

API REST za posodobitev vaše baze podatkov

Ko končate, lahko preverite, ali vaš API deluje z uporabo odjemalca REST, kot je Postman, ali s pisanjem testov enote. Morali bi biti sposobni zagotoviti, da vseh pet končnih točk deluje, kot pričakujete.

Podatke, ki ste jih dodali v bazo podatkov, lahko tudi pregledujete in upravljate z orodjem pgAdmin. To je aplikacija GUI, ki olajša izvajanje administracije baze podatkov in interakcijo s strežniki PostgreSQL.