CRUD API mengelola data melalui empat operasi basis data dasar: buat, baca, perbarui, dan hapus. Anda dapat membuat CRUD API sederhana hanya dengan Express dan database PostgreSQL.
Mulailah dengan membuat server Express tempat Anda akan menghubungkan PostgreSQL. Kemudian, buat fungsi CRUD dan hubungkan ke titik akhir API. Setelah Anda melakukannya, Anda akan dapat menghubungkan Node ke PostgreSQL dan melakukan kueri basis data pada setiap rute.
Prasyarat untuk Membangun API
Untuk mengikuti tutorial ini, Anda harus:
- Instal Node di mesin Anda.
- Instal server PostgreSQL di mesin Anda.
- Memiliki pengetahuan dasar tentang Express.js.
Buat Server Ekspres
Ke buat server Ekspres, mulailah dengan membuat direktori baru dan memasukkannya:
catatan mkdir
CD catatan
Kemudian inisialisasi npm:
npm init -y
Perintah ini akan menghasilkan package.json file di folder catatan. Terakhir, instal Express.
npm Install cepat
Buat file baru bernama index.js dan tambahkan kode berikut.
konstan ekspres = memerlukan("cepat");
konstan aplikasi = ekspres();aplikasi.menggunakan(cepat.urlencoded({
diperpanjang: BENAR
}));
aplikasi.menggunakan(cepat.json())
app.listen (3000, () => konsol.log("Mendengarkan di port 3000"));
Ini akan membuat server baru mendengarkan di port 3000.
Buat Database PostgreSQL
Jalankan perintah berikut di command prompt psql untuk membuat database PostgreSQL bernama notesb.
postgres=# BUAT DATABASE dicatatb;
Jalankan perintah ini untuk daftar semua database Postgres dan periksa apakah Anda membuat database notesb:
postgres=# \l
Hubungkan ke Database
Hal pertama yang pertama, hubungkan aplikasi Node Anda ke server PostgreSQL. Anda dapat menggunakan modul node-Postgres.
Jalankan yang berikut ini untuk menginstalnya melalui npm:
npm Install hal
Sebagai praktik yang baik, sambungkan ke database dalam file terpisah.
Buat file baru bernama db.js dan tambahkan berikut ini.
konstan { Klien } = memerlukan("hal");
konstan { pengguna, host, basis data, kata sandi, port } = memerlukan("./dbConfig");konstan klien = baru Klien({
pengguna,
tuan rumah,
basis data,
kata sandi,
Pelabuhan,
});
klien.Menghubung();
modul.ekspor = klien;
Di sini, Anda mengekspor string koneksi yang akan Anda gunakan untuk berkomunikasi ke database. Perhatikan bahwa Anda sedang membaca pengaturan koneksi database dari file konfigurasi bernama dbConfig.js. Oleh karena itu, buat dbConfig.js dan tambahkan data berikut ke dalamnya.
modul.ekspor = {
pengguna: "{dbPengguna}",
tuan rumah: "{dbHost}",
basis data: "dicatat",
kata sandi: "{dbPassword}",
pelabuhan: 5432,
};
Ingatlah untuk mengganti detail database dengan nilai lokal Anda sendiri.
Buat Tabel PostgreSQL
Di prompt perintah psql, buat tabel bernama catatan. Untuk memulai, sambungkan ke database notesb menggunakan perintah \c.
postgres=# \c dicatatb
Selanjutnya, buat tabel di database yang terhubung menggunakan perintah CREATE TABLE.
dicatatb=# BUAT catatan TABEL (
KUNCI UTAMA SERI ID,
catatan VARCHAR(255)
);
Tabel ini cukup sederhana. Itu hanya memiliki ID yang merupakan kunci utama yang dibuat secara otomatis dan bidang teks yang disebut catatan.
Buat Catatan
Alih-alih melakukan operasi CRUD di rute, buat fungsi yang akan berinteraksi dengan database dalam file terpisah.
Buat file pembantu bernama pembantu.js dan impor objek koneksi dari db.js.
konstan klien = memerlukan("./db");
Gunakan kode berikut untuk membuat fungsi createNote().
konstan createNote = (req, res) => {
mencoba {
konstan { catatan } = req.body;jika (!catatan) {
melemparkanKesalahan("Kirim catatan di badan permintaan");
}
klien.pertanyaan(
"MEMASUKKANKE DALAM catatan (catatan) NILAI ($1)",
[catatan],
(err, data) => {
res.status(201).json({
kesalahan: batal,
pesan: "Membuat catatan baru",
});
}
);
} menangkap (kesalahan) {
res.status(500).json({
kesalahan: kesalahan.pesan,
pesan: "Gagal untuk membuatbaru catatan",
});
}
};
Fungsi ini pertama-tama memeriksa apakah badan permintaan menyertakan catatan. Jika catatan tidak ada, itu melempar kesalahan.
Untuk membuat catatan, fungsi menggunakan klausa INSERT. Ini mengembalikan objek JSON yang berisi pesan kesalahan nol dan pesan sukses jika berhasil.
Dapatkan Semua Catatan
Untuk mendapatkan semua catatan dari tabel, gunakan klausa SELECT *.
konstan getNotes = (permintaan, res) => {
mencoba {
klien. permintaan("PILIH * DARI catatan", (err, data) => {
jika (berbuat salah) melemparkan berbuat salah;
res.status(200).json({
berbuat salah: batal,
catatan: data.baris,
});
});
} menangkap (kesalahan) {
res.status(500).json({
berbuat salah: kesalahan.pesan,
catatan: batal,
});
}
};
getNotes() mengirimkan larik catatan di objek respons jika kueri berhasil.
Dapatkan Catatan dengan ID
API juga akan memiliki titik akhir yang mengembalikan catatan berdasarkan ID. Di helper.js, tambahkan fungsi getNoteById().
konstan getNoteById = (req, res) => {
mencoba {
konstan { id } = req.params;
klien. permintaan("PILIH * DARI catatan DI MANA id=$1", [id], (err, data) => {
jika (berbuat salah) melemparkan berbuat salah;
res.status(200).json({
berbuat salah: batal,
catatan: data.baris[0],
});
});
} menangkap (kesalahan) {
res.status(500).json({
berbuat salah: berbuat salah.pesan,
catatan: batal,
});
}
};
Fungsi ini akan mengembalikan objek JSON yang berisi catatan dan objek kesalahan.
Perbarui Catatan dengan ID
Untuk memperbarui catatan, Anda memerlukan catatan dan ID catatan itu. Anda akan mendapatkan catatan dari badan permintaan dan ID dari URL.
Fungsi updateNoteById() menggunakan klausa UPDATE untuk memperbarui catatan yang ada dengan catatan baru.
konstan updateNoteById = (req, res) => {
mencoba {
konstan { id } = req.params;
konstan { catatan } = req.body;
klien.pertanyaan(
"MEMPERBARUI catatan MENGATUR catatan = $1DI MANAIndo = $2",
[catatan, identitas],
(err, data) => {
jika (berbuat salah) melemparkan berbuat salah;
res.status(201).json({
berbuat salah: batal,
pesan: "Catatan yang diperbarui",
});
}
);
} menangkap (kesalahan) {
res.status(500).json({
berbuat salah: kesalahan.pesan,
pesan: "Gagal memperbarui catatan",
});
}
};
Fungsi ini mengembalikan pesan sukses jika tabel diperbarui dan pesan kesalahan jika tidak.
Hapus Catatan dengan ID
Untuk menghapus catatan dengan ID dari tabel gunakan kode berikut.
konstan deleteNote = (permintaan, res) => {
mencoba {
konstan { id } = req.params;
klien. permintaan("HAPUS DARI catatan DI MANA id=$1", [id], (err, data) => {
jika (berbuat salah) melemparkan berbuat salah;
res.status(200).json({
kesalahan: batal,
pesan: "Catatan dihapus",
});
});
} menangkap (kesalahan) {
res.status(500).json({
kesalahan: kesalahan.pesan,
pesan: "Gagal menghapus catatan",
});
}
};
Sekarang Anda telah membuat semua fungsi CRUD, ekspor mereka.
Di helper.js, tambahkan yang berikut ini.
modul.ekspor = { createNote, getNotes, getNoteById, updateNoteById, deleteNote };
Anda akan mengimpornya di index.js saat membuat titik akhir API.
Buat Rute API
Langkah terakhir adalah membuat titik akhir API di index.js untuk setiap operasi CRUD.
Mulailah dengan mengimpor file helper.js.
konstan db = memerlukan("./pembantu")
Selanjutnya, buat setiap titik akhir.
aplikasi.get("/notes", db.getNotes);
aplikasi.get("/note/:id", db.getNoteById);
aplikasi.put("/note/:id", db.updateNoteById);
aplikasi.post("/note", db.createNote);
hapus aplikasi("/note/:id", db.deleteNote);
REST API untuk Memperbarui Basis Data Anda
Setelah selesai, Anda dapat memeriksa apakah API Anda berfungsi dengan menggunakan klien REST seperti Postman, atau dengan menulis unit test. Anda harus dapat memastikan bahwa kelima titik akhir berfungsi seperti yang Anda harapkan.
Anda juga dapat memeriksa dan mengelola data yang Anda tambahkan ke database menggunakan alat pgAdmin. Ini adalah aplikasi GUI yang memudahkan untuk melakukan administrasi database dan berinteraksi dengan server PostgreSQL.