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 = 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.