Membangun RESTful API Menggunakan Node.js Framework HAPI.js (Menambahkan data)

HIMADIRA
4 min readAug 12, 2021

--

Halo sobat dira, gimana liburan nya? semoga di hari libur ini kita mengisi waktu kita dengan hal-hal yang positif yaa. Baik mari kita lanjutkan seri Membangun RESTful API ini, setelah kemarin kita berhasil menjalankan server dari hapi.js, hari ini kita akan melakukan operasi menambahkan,menampilkan,mengubah,serta menghapus data pada API kita. Kemudian setelah itu, kita akan melakukan testing API menggunakan Postman.

Sekarang mari kita mengingat kembali studi kasus kita.

Studi Kasus :

Kita akan membuat sebuah API yang berisi data siswa di sekolah , panitia bisa menambahkan,mengedit,serta menghapus data nama calon siswa baru.

Sebelum kalian memulai tutorial ini, pastikan kalian sudah membuat server, serta menjalankannya.

Dalam tutorial ini, mari kita terapkan konsep modularization yang dimana, kita akan memisahkan antara satu fungsi dengan fungsi lainnya agar project kita menjadi terstruktur dan rapih.

Sekarang, buatlah folder bernama src yang akan menampung seluruh file kita kecuali, package.json, package-lock.json, node_modules dan .eslinctrc.json.

Pindahkan file server.js kedalam folder src , kemudian kita membutuhkan beberapa file yaitu :

  1. Route.js untuk menyimpan routes kita.
  2. Handler.js yang berisi logic yang akan mengelola CRUD kita.
  3. Siswa.js kita akan membuat sebuah array (kalian boleh memakai jenis struktur data yang kalian inginkan) untuk menyimpan data dari siswa kita.

Simpan file-file diatas ke dalam folder src.

lalu, jangan lupa pada package.json jangan lupa untuk mengganti start menjadi nodemon ./src/server.js.

Baik, mari kita buat sebuah route yang berisi method,path dan handler yang kita pakai.

Method : POST,

Path : /siswa/create,

handler : CreateSiswa,

Pada routes jangan lupa untuk melakukan exports agar bisa kita gunakan pada server nanti nya.

Untuk menghindari error linebreak style kalian bisa atur pada .eslintrc.json dengan memasukan “Linebreak-style:off” pada rules

Kemudian, pada Handler.js jangan lupa untuk membuat function dengan nama CreateSiswa .

Sebelum kita melakukan operasi create alangkah baiknya kita isi terlebih dahulu file Siswa.js sebagai tempat penyimpanan data kita.

Pada kode diatas, kita mendeklarasikan bahwa dataSiswa merupakan array kosong yang siap untuk kita masukkan data nya.

Pada CreateSiswa struktur objek siswa yang akan kita pakai yaitu :

Dalam apps yang di input oleh panitia yaitu hanya. nis,nama,kelas,alamat dan asal sekolah.

Mari kita breakdown kode diatas agar bisa mudah dimengerti.

  • Pada kode bagian ini , kita melakukan request.payload yang berfungsi untuk mengambil data-data yang ada pada body request.
  • Pada node.js untuk mendapatkan data pada body request kita memerlukan readable stream. Pada Hapi.js ini kita dipermudahkan dengan request.payload jadi, pada request.payload ini, kita tidak perlu melakukan readable stream.
  • Selain itu, pada request.payload ini juga otomatis mengubah payload JSON menjadi objek javascript, sehingga kita tidak perlu lagi menggunakan JSON.parse() pada kode kita.
  • Pada baris berikutnya kita mengambil id dari nanoid, kalian bisa install nanoid menggunakan NPM dengan mengetik NPM add nanoid.
  • Pada baris kedua, untuk createdAt kita ambil dari tanggal saat ini
  • Karena kita disini melakukan input data , maka updatedAt nya kita inisialisasikan bahwa dia sama dengan createdAt nya.
  • Kemudian semua data-data diatas, kita simpan ke dalam sebuah tempat, dan kemudian kita push semua data tersebut ke dalam array dataSiswa melalui fungsi array.push().
  • Setelah kita melakukan proses pushing, untuk memastikan bahwa data tersebut benar-benar masuk atau tidak maka kita memerlukan filter berdasarkan id siswa, yang kemudian hasil dari filter tersebut kita masukan ke dalam sebuah variabel isSuccess.
  • Selanjutnya kita menggunakan if untuk untuk mengecek isSuccess dan memberitahukan kepada client bahwa proses tersebut berhasil atau gagal.
  • Jika proses filtering berhasil, maka sistem akan mengembalikan response code 201 dan memunculkan pesan “data berhasil dimasukkan!”. Namun, jika sebaliknya maka sistem akan mengembalikan response code 400 dan memunculkan pesan “siswa gagal dimasukkan!”.

Baik, selanjutnya jangan lupa untuk melakukan export dan agar bisa kita jalankan pada server, kita daftarkan routes kita pada server.js dengan kode server.route(routes);

Jika sudah selesai, Selamat! kalian berhasil melakukan proses Create, pada artikel selanjutnya, kita akan membahas tentang proses Menampilkan data, terimakasih jangan lupa untuk kritik dan saran nya :)

--

--