CRUD API hallitsee tietoja neljällä tietokantatoiminnolla: luo, lue, päivitä ja poista. Voit luoda yksinkertaisen CRUD-sovellusliittymän vain Expressin ja PostgreSQL-tietokannan avulla.

Aloita luomalla Express-palvelin, johon liität PostgreSQL: n. Luo sitten CRUD-funktiot ja liitä ne API-päätepisteisiin. Kun olet tehnyt niin, voit yhdistää Noden PostgreSQL: ään ja suorittaa tietokantakyselyitä jokaisella reitillä.

API: n rakentamisen edellytykset

Jotta voit seurata tätä opetusohjelmaa, sinun tulee:

  • Asenna Node koneellesi.
  • Asenna PostgreSQL-palvelin koneellesi.
  • Sinulla on perustiedot Express.js.

Luo Express-palvelin

Vastaanottaja luo Express-palvelin, aloita luomalla uusi hakemisto ja kirjoittamalla se:

mkdir toteaa
CD muistiinpanoja

Alusta sitten npm:

npm init -y

Tämä komento luo a package.json tiedosto muistiinpanokansiossa. Asenna lopuksi Express.

npm Asentaa ilmaista

Luo uusi tiedosto nimeltä index.js ja lisää seuraava koodi.

konst express = vaatia("ilmaista");
konst sovellus = express();

sovellus.käyttää(ilmaista.urlencoded({
laajennettu: totta
}));

instagram viewer

sovellus.käyttää(ilmaista.json())
app.listen (3000, () => console.log("Kuuntele portti 3000"));

Tämä luo uuden palvelimen, joka kuuntelee porttia 3000.

Luo PostgreSQL-tietokanta

Suorita seuraava komento psql-komentokehotteessa luodaksesi PostgreSQL-tietokanta nimeltä notedb.

postgres=# LUO TIETOKANTA notedb;

Suorita tämä komento kohteeseen luettele kaikki Postgres-tietokannat ja tarkista, että loit notedb-tietokannan:

postgres=# \l

Yhdistä tietokantaan

Ensimmäiset asiat ensin, yhdistä Node-sovelluksesi PostgreSQL-palvelimeen. Voit käyttää node-Postgres-moduulia.

Asenna se npm: n kautta suorittamalla seuraava:

npm Asentaa s

Hyvä käytäntö on muodostaa yhteys tietokantaan erillisessä tiedostossa.

Luo uusi tiedosto nimeltä db.js ja lisää seuraava.

konst { Asiakas } = vaatia("pg");
konst { käyttäjä, isäntä, tietokanta, salasana, portti } = vaatia(./dbConfig");

konst asiakas = Uusi Asiakas({
käyttäjä,
isäntä,
tietokanta,
Salasana,
satama,
});

asiakas.kytkeä();
moduuli.vientiä = asiakas;

Tässä vietät yhteysmerkkijonoa, jota käytät viestimiseen tietokantaan. Huomaa, että luet tietokantayhteysasetuksia konfiguraatiotiedostosta nimeltä dbConfig.js. Siksi luo dbConfig.js ja lisää siihen seuraavat tiedot.

moduuli.vientiä = {
käyttäjä: "{dbUser}",
isäntä: "{dbHost}",
tietokanta: "huomautti b",
Salasana: "{dbPassword}",
portti: 5432,
};

Muista korvata tietokannan tiedot omilla paikallisilla arvoillasi.

Luo PostgreSQL-taulukko

Luo psql-komentokehotteessa taulukko nimeltä Notes. Aloita muodostamalla yhteys noteb-tietokantaan \c-komennolla.

postgres=# \c huomauttib

Luo seuraavaksi taulukko yhdistettyyn tietokantaan CREATE TABLE -komennolla.

noteb=# CREATE TABLE muistiinpanot (
ID SERIAL PRIMARY KEY,
huomautus VARCHAR(255)
);

Tämä taulukko on melko yksinkertainen. Siinä on vain tunnus, joka on automaattisesti luotu ensisijainen avain, ja tekstikenttä nimeltä huomautus.

Luo muistiinpano

Sen sijaan, että suorittaisit CRUD-toimintoja reiteillä, luo toimintoja, jotka ovat vuorovaikutuksessa tietokannan kanssa erillisessä tiedostossa.

Luo aputiedosto nimeltä helper.js ja tuo yhteysobjekti db.js: sta.

konst asiakas = vaatia(./db");

Luo CreateNote()-funktio seuraavalla koodilla.

konst createNote = (req, res) => {
yrittää {
konst { huomautus } = req.body;

if (!huomautus) {
heittääVirhe("Lähetä huomautus sisään pyyntöelin");
}

asiakas.query(
"LISÄÄINTO muistiinpanoja (huomautus) ARVOT ($1)",
[merkintä],
(err, data) => {
res.Tila(201).json({
virhe: tyhjä,
viesti: "Uusi muistiinpano luotu",
});
}
);
} ottaa kiinni (virhe) {
res.Tila(500).json({
virhe: virhe.viesti,
viesti: "Epäonnistui luodaUusi merkintä",
});
}
};

Tämä toiminto tarkistaa ensin, onko pyynnön rungossa huomautus. Jos muistiinpano puuttuu, se antaa virheilmoituksen.

Muistiinpanon luomiseen funktio käyttää INSERT-lausetta. Se palauttaa JSON-objektin, joka sisältää nolla-virhesanoman ja onnistumissanoman, jos se onnistuu.

Hanki kaikki muistiinpanot

Saat kaikki muistiinpanot taulukosta käyttämällä SELECT * -lausetta.

konst getNotes = (req, res) => {
yrittää {
client.query("SELECT * FROM muistiinpanoista", (err, data) => {
jos (err) heittää err;

res.Tila(200).json({
virhe: tyhjä,
muistiinpanoja: tiedot.riviä,
});
});
} ottaa kiinni (virhe) {
res.Tila(500).json({
err: virhe.viesti,
huomautuksia: tyhjä,
});
}
};

getNotes() lähettää huomautustaulukon vastausobjektissa, jos kysely onnistuu.

Hanki muistiinpano tunnuksella

API: lla on myös päätepiste, joka palauttaa huomautuksen tunnuksella. Lisää tiedostoon helper.js getNoteById()-funktio.

konst getNoteById = (req, res) => {
yrittää {
konst { id } = req.params;
client.query("SELECT * FROM muistiinpanoista WHERE id=$1", [id], (err, data) => {
jos (err) heittää err;
res.Tila(200).json({
virhe: tyhjä,
merkintä: tiedot.riviä[0],
});
});
} ottaa kiinni (virhe) {
res.Tila(500).json({
err: err.viesti,
merkintä: tyhjä,
});
}
};

Tämä toiminto palauttaa JSON-objektin, joka sisältää huomautuksen ja virheobjektin.

Päivitä muistiinpano tunnuksella

Muistiinpanon päivittämiseksi tarvitset muistiinpanon ja sen tunnuksen. Saat huomautuksen pyynnön tekstiosasta ja tunnuksen URL-osoitteesta.

updateNoteById()-funktio käyttää UPDATE-lausetta olemassa olevan muistiinpanon päivittämiseen uudella muistiinpanolla.

konst updateNoteById = (req, res) => {
yrittää {
konst { id } = req.params;
konst { huomautus } = req.body;
asiakas.query(
"PÄIVITTÄÄ muistiinpanoja ASETA huomautus = $1MISSÄid = $2",
[huomautus, tunnus],
(err, data) => {
jos (err) heittää err;

res.Tila(201).json({
virhe: tyhjä,
viesti: "Päivitetty muistiinpano",
});
}
);
} ottaa kiinni (virhe) {
res.Tila(500).json({
err: virhe.viesti,
viesti: "Muistiinpanon päivittäminen epäonnistui",
});
}
};

Tämä funktio palauttaa onnistumisviestin, jos taulukko päivitetään, ja virheilmoituksen, jos se ei ole.

Poista muistiinpano tunnuksella

Voit poistaa muistiinpanon tunnuksella taulukosta käyttämällä seuraavaa koodia.

konst deleteNote = (req, res) => {
yrittää {
konst { id } = req.params;
client.query("POISTA muistiinpanoista WHERE id=$1", [id], (err, data) => {
jos (err) heittää err;

res.Tila(200).json({
virhe: tyhjä,
viesti: "Huomautus poistettu",
});
});
} ottaa kiinni (virhe) {
res.Tila(500).json({
virhe: virhe.viesti,
viesti: "Muistiinpanon poistaminen epäonnistui",
});
}
};

Nyt kun olet luonut kaikki CRUD-funktiot, vie ne.

Lisää tiedostoon helper.js seuraava.

moduuli.vientiä = { createNote, getNotes, getNoteById, updateNoteById, deleteNote };

Tuot ne sisään index.js kun luot API-päätepisteitä.

Luo API-reitit

Viimeinen vaihe on API-päätepisteiden luominen index.js jokaiselle CRUD-operaatiolle.

Aloita tuomalla helper.js-tiedosto.

konst db = vaatia("./auttaja")

Luo seuraavaksi jokainen päätepiste.

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-sovellusliittymä tietokantaasi päivittämiseen

Kun olet valmis, voit tarkistaa, että API toimii käyttämällä REST-asiakasohjelmaa, kuten Postman, tai kirjoittamalla yksikkötestejä. Sinun pitäisi pystyä varmistamaan, että kaikki viisi päätepistettä toimivat odotetulla tavalla.

Voit myös tarkastaa ja hallita tietokantaan lisäämiäsi tietoja pgAdmin-työkalulla. Se on GUI-sovellus, jonka avulla on helppo suorittaa tietokannan hallinta ja olla vuorovaikutuksessa PostgreSQL-palvelimien kanssa.