API adalah mekanisme yang memungkinkan 2 komponen perangkat lunak dapat berkomunasi satu sama lain. API sendiri merupakan singkatan dari Application Programming Interface.
Dalam konteks API, kata Aplikasi mengacu pada perangkat lunak apapun dengan fungsi yang berbeda. Antarmuka dapat dianggap sebagai kontral layanan antara 2 aplikasi. Kontrak ini mendefinisikan bagaimana keduanya berkomunikasi satu sama lain menggunakan request dan responses.
Arsitektur API biasanya dijelaskan dalam istilah klien dan server. Aplikasi yang mengirimkan permintaan disebut klien, dan aplikasi yang mengirim respons disebut server.
Baca Juga
Salah satu API yang populer dan fleksibel yaitu REST APIs. REST adalah singkatan dari Representational State Transfer. REST mendefinisikan serangkaian fungsi seperti GET, PUT, DELETE, dll. yang dapat digunakan klien untuk mengakses data server. Klien dan server bertukar data menggunakan HTTP.
Membuat REST APIs dengan Node JS
Setelah kita mengetahui pengertian serta cara kerja API, kemudian kita akan mencoba membuat REST APIs sederhana menggunakan Node JS.
Pertama kita buka cmd, lalu ketikan perintah dibawah untuk membuat folder baru dengan nama rest-api-nodejs. Kemudian kita buka folder tersebut dengan mengetikan cd nama_folder di cmd.
mkdir rest-api-nodejs && cd rest-api-nodejs
Setelah kita berada di folder yang telah kita buat, lalu kita perlu menjalankan perintah di bawah ini di cmd untuk menginisialisasi project kita. Jika sudah di dalam folder tersebut akan terdapat package.json
npm init -y
Selanjutnya kita perlu menginstall 2 package yaitu express dan mysql untuk membuat API dengan Node JS.
npm install express mysql
Setelah proses instalasi package, kemudian kita akan membuat file baru dengan nama index.js. Pada file tersebut kita perlu memanggil 2 package yang sebelumnya kita install yaitu express dan mysql.
const express = require("express"); const mysql = require("mysql");
Pertama kita perlu menginisialisasi express dan mengatur port untuk menjalankan aplikasi Node JS kita.
const app = express(); const port = 5011;
Kita perlu membuat database dengan nama db_bookstore terlebih dahulu. Selanjutnya kita jalankan query berikut pada database yang barusan dibuat untuk membuat table buku.
CREATE TABLE `buku` ( `kode_buku` bigint(20) NOT NULL, `judul` varchar(255) NOT NULL, `penulis` varchar(255) NOT NULL, `harga` bigint(20) NOT NULL, PRIMARY KEY (`kode_buku`) )
Setelah itu, kita buat koneksi ke databse mysql. Sesuaikan nama host, user, password, dan database kalian.
// Koneksi ke database MySQL var mydb = mysql.createConnection({ host: "localhost", user: "root", password: "", database: "db_bookstore", }); mydb.connect();
Disini kita buat middleware yang digunakan untuk parse data dalam request body dalam format JSON. Selain itu, kita buat route dengan method get untuk homepage yang akan menampilkan pesan “Homepage Backend Toko Buku”.
// Middleware yang digunakan untuk parse data dalam request body (format JSON) app.use(express.json()); app.get("/", (req, res) => { console.log("Akses : /"); res.send("Homepage Backend Toko Buku"); });
Kemudian, kita buat route dengan method post pada url ‘/insert_data_buku’ untuk memasukkan data buku baru ke dalam database.
// Memasukkan data buku app.post("/insert_data_buku", (req, res) => { console.log("Akses : /insert_data_buku"); // Menerima data dari request body var kode_buku = req.body.kode_buku; var judul = req.body.judul; var penulis = req.body.penulis; var harga = req.body.harga; // Memasukkan data kedalam database // Membuat Query dan Values yang akan dieksekusi var query_create = "INSERT INTO buku (kode_buku, judul, penulis, harga) VALUES (?, ?, ?, ?)"; var values_create = [kode_buku, judul, penulis, harga]; // Eksekusi Query mydb.query(query_create, values_create, function (err, result, fields) { if (err) throw err; console.log(result); // Membuat respon untuk dikembalikan dalam format JSON var response_payload = { description: "Berhasil memasukkan data buku", mysql_response: result, }; // Mengembalikan respon res.json(response_payload); }); });
Selanjutnya, kita buat route dengan method get pada url ‘/get_data_buku’ untuk melihat semua buku yang ada di dalam database. Selain itu, kita juga bisa melihat 1 buku saja dengan menambahkan paramater kode_buku di dalam url. Seperti berikut ‘/get_data_buku?kode_buku=12345’.
// Melihat data buku app.get("/get_data_buku", (req, res) => { console.log("Akses : /get_data_buku"); var query_read = "SELECT * FROM buku WHERE 1 = 1 "; // Jika terdapat parameter yang digunakan, tambahkan ke query if (req.query.kode_buku) { query_read += "AND kode_buku = " + mysql.escape(req.query.kode_buku); } // Eksekusi query mydb.query(query_read, function (err, result, fields) { if (err) throw err; // Membuat respon untuk dikembalikan dalam format JSON var response_payload = { description: "Berhasil mendapatkan data buku", data: result, }; // Mengembalikan respon res.json(response_payload); }); });
Kita juga akan buat route dengan method put pada url ‘/update_data_buku’ untuk mengubah buku yang ada di dalam database. Selain itu, kita perlu mengirimkan paramater kode_buku di dalam url. Seperti berikut ‘/update_data_buku/12345’.
// Mengubah data buku app.put("/update_data_buku/(:kode_buku)", (req, res) => { console.log("Akses : /update_data_buku"); // Menerima data dari request params dan body var kode_buku_awal = req.params.kode_buku; var kode_buku_ubah = req.body.kode_buku_ubah; var judul = req.body.judul; var penulis = req.body.penulis; var harga = req.body.harga; // Membuat Values yang akan dieksekusi var values = `kode_buku = ${mysql.escape(kode_buku_awal)}`; if (kode_buku_ubah) { values += `, kode_buku = ${mysql.escape(kode_buku_ubah)}`; } if (judul) { values += `, judul = ${mysql.escape(judul)}`; } if (penulis) { values += `, penulis = ${mysql.escape(penulis)}`; } if (harga) { values += `, harga = ${mysql.escape(harga)}`; } // Membuat Query yang akan dieksekusi var query_update = `UPDATE buku SET ${values} WHERE kode_buku = ${mysql.escape( kode_buku_awal )}`; // Eksekusi Query mydb.query(query_update, function (err, result, fields) { if (err) throw err; console.log(result); // Membuat respon untuk dikembalikan dalam format JSON var response_payload = { description: "Berhasil mengubah data buku", mysql_response: result, }; // Mengembalikan respon res.json(response_payload); }); });
Kita juga akan buat route dengan method delete pada url ‘/delete_data_buku’ untuk menghapus buku yang ada di dalam database. Selain itu, kita perlu mengirimkan paramater kode_buku di dalam url. Seperti berikut ‘/delete_data_buku/12345’.
// Menghapus data buku app.delete("/delete_data_buku/(:kode_buku)", (req, res) => { console.log("Akses : /delete_data_buku"); // Menerima data dari request params var kode_buku = req.params.kode_buku; // Membuat Query yang akan dieksekusi var query_delete = `DELETE FROM buku WHERE kode_buku = ${mysql.escape( kode_buku )}`; // Eksekusi Query mydb.query(query_delete, function (err, result, fields) { if (err) throw err; console.log(result); // Membuat respon untuk dikembalikan dalam format JSON var response_payload = { description: "Berhasil menghapus data buku", mysql_response: result, }; // Mengembalikan respon res.json(response_payload); }); });
Terakhir kita bisa menjalankan server dengan menggunakan method listen().
// Menjalankan server app.listen(port, () => { console.log("Server berjalan pada URL : http://localhost:" + port); });
Testing API dengan Postman
Kita akan melakukan testing API dengan menggunakan Postman untuk melihat apakah API yang kita buat sudah bisa berjalan dan tidak memiliki eror.
Pertama, kalian harus mendownload Postman terlebih dahulu. Kalian bisa mendownload Postman disini. Lalu pilih sesuai dengan sistem operasi kalian.
Jika sudah berhasil mendownload, lakukan instalasi pada Postman. Instalasi pada Postman sendiri tidak terlalu sulit, kalian hanya perlu klik next saja sampai Postman terinstal di komputer kalian. Terakhir lakukan testing API seperti gambar berikut.
Untuk full code nya Anda bisa melihatnya langsung di github melalui link berikut ini.