Validasi Menjadi Simple Dan Clean Di Express.js Menggunakan Express-Validator

Validasi Menjadi Simple Dan Clean Di Express.js Menggunakan Express-Validator

Jika kalian membangun aplikasi web menggunakan Express.js validasi memiliki peran penting guna memvalidasi request body, param, query. Beberapa alasan kenapa kalian membutuhkan validasi di sisi backend.

  1. Validasi sisi klien Anda tidak cukup dan sangat mungkin dijebol.
  2. Lebih rentan terhadap serangan Man in middle, dan server tidak boleh mempercayai sisi klien.
  3. User dapat mematikan validasi JavaScript sisi klien dan memanipulasi data.

Membuat sistem validasi sendiri pasti akan sangat wasting your time, nah kalian bisa memanfaatkan Express-validator, sebuah middleware express.js yang menggabungkan banyak koleksi validator dan sanitizer validator.js.

Fitur Express Validator :

  1. Validasi Input Form: Menentukan aturan validasi untuk data yang diinput melalui form, seperti pemeriksaan apakah suatu field harus diisi, validasi alamat email, password, dan lainnya.

  2. Penyaringan dan Penyesuaian Data: Membersihkan data dari karakter-karakter yang tidak diinginkan atau melakukan penyesuaian format data.

  3. Error Message: Memungkinkan untuk menyesuaikan pesan-pesan kesalahan yang akan dikirimkan jika validasi gagal.

  4. Easy to Use: Integrasi yang sederhana dengan framework Express.js sehingga dapat digunakan dengan mudah.

Cara Menggunakan Express Validator

Instalasi

Langkah pertama adalah menginstal Express Validator di aplikasi Express.js Anda menggunakan npm atau yarn:

npm install express-validator

Pengunaan di express.js :

Langkah 1: Setup Express dan Middleware

const express = require('express');
const { body, validationResult } = require('express-validator');

const app = express();
app.use(express.json());
  • Mengimpor framework Express dan Express Validator.
  • Membuat instance dari aplikasi Express dengan const app = express();.
  • Menggunakan middleware parser Express JSON untuk mengubah request yang masuk menjadi JSON.

Langkah 2: Endpoint untuk Pendaftaran ('/daftar')

app.post('/daftar', [
  body('username').notEmpty().isLength({ min: 5, max: 15 }),
  body('email').notEmpty().isEmail(),
  body('password').notEmpty().isLength({ min: 8, max: 15 }),
], (req, res) => {
  // ...
});
  • Menetapkan endpoint POST '/daftar' yang akan melakukan validasi terhadap data yang diterima.
  • Penggunaan body() dari Express Validator untuk mengakses dan melakukan validasi terhadap properti tertentu dalam body permintaan.
  • body('username').notEmpty().isLength({ min: 5, max: 15 }): Memvalidasi username yang tidak boleh kosong, harus memiliki panjang minimal 5 karakter, dan panjang maksimal 15 karakter.
  • body('email').notEmpty().isEmail(): Memvalidasi email yang tidak boleh kosong dan harus berformat alamat email yang valid.
  • body('password').notEmpty().isLength({ min: 8, max: 15 }): Memvalidasi password yang tidak boleh kosong, harus memiliki panjang minimal 8 karakter, dan panjang maksimal 15 karakter.

Langkah 3: Penanganan Hasil Validasi

const errors = validationResult(req);
if (!errors.isEmpty()) {
  return res.status(422).json({ errors: errors.array() });
}
// Memproses Data jika Tervalidasi
// ...
  • validationResult(req) digunakan untuk mendapatkan hasil dari validasi yang dilakukan terhadap request (req).
  • Jika terdapat kesalahan dalam validasi (errors tidak kosong), tanggapan dengan status 422 akan dikirimkan ke klien berisi array pesan kesalahan yang dihasilkan oleh Express Validator.
  • Jika data tervalidasi tanpa kesalahan, langkah berikutnya dalam aplikasi (misalnya, memproses data) dapat dilanjutkan.

Kode Keseluruhan :

const express = require('express');
const { body, validationResult } = require('express-validator');

const app = express();
app.use(express.json());

// Middleware untuk melakukan validasi data
app.post('/daftar', [
  body('username').notEmpty().isLength({ min: 5, max: 15 }),
  body('email').notEmpty().isEmail(),
  body('password').notEmpty().isLength({ min: 8, max: 15 }),
], (req, res) => {
  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(422).json({ errors: errors.array() });
  }

  // Memproses Data jika Tervalidasi
  // ...
});

app.listen(3000, () => {
  console.log('Server di port 3000');
});

Ketika kita menjalankan code diatas dan mengirim body JSON tanpa menyertakan username akan memunculkan response seperti berikut:

{
  "errors": [
    {
      "type": "field",
      "msg": "Invalid value",
      "path": "username",
      "location": "body"
    }
  ]
}

Kesimpulan

Seperti yang kita lihat, menggunakan express-validator sangat membantu kita menangani sebagian besar validasinya. Ini juga menjaga kualitas kode, dan berfokus terutama pada logika bisnis. Selain menggunakan aturan-aturan bawaan express-validator kita juga dapat custom aturan validasi sendiri yang akan kita bahas di artikel selanjutnya.

Terus Semangat untuk Belajar, Dan jangan ragu untuk bertanya jika memiliki pertanyaan lebih lanjut, jangan lupa untuk follow akun sosial media kami. Semoga teman-teman enjoy dengan tutorial yang diberikan, Semangat Koding :)

#InJavascriptWeTrust

Close

Silahkan Login/Sign Up

😞 Discord eklusif buat member asinkron.com

Jangan khawatir silahkan Daftar GRATIS 😎

*Link discord akan dikirim ke email yang anda gunakan untuk mendaftar.