cara membuat api dengan node js

Cara Membuat API dengan Node JS

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.

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.

Testing Get API dengan Postman
Testing Route GET untuk mendapatkan semua data buku
Testing Route GET API dengan Postman
Testing Route GET untuk mendapatkan data buku dengan kode 12345
Testing Route POST API dengan Postman
Testing Route POST untuk menambahkan data buku baru
Testing Route PUT API dengan Postman
Testing Route PUT untuk mengubah data buku dengan kode_buku 12345
Testing Route Delete API dengan Postman
Testing Route DELETE untuk menghapus data buku dengan kode_buku 12345

Untuk full code nya Anda bisa melihatnya langsung di github melalui link berikut ini.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top