Proyek ini adalah implementasi RESTful API menggunakan Express.js sebagai framework web dan Sequelize sebagai ORM (Object-Relational Mapping) untuk database SQL Server. API ini menyediakan sistem manajemen pengguna lengkap dengan fitur autentikasi menggunakan JWT (JSON Web Token).
- π Sistem autentikasi dengan JWT (login/signup)
- π₯ Manajemen pengguna (Create, Read, Update, Delete)
- β Validasi data dengan fastest-validator
- π Enkripsi password dengan bcrypt
- ποΈ Soft delete untuk penghapusan data aman
- π‘οΈ Middleware untuk proteksi endpoint
- π Logging dengan morgan
- Backend: Node.js, Express.js
- Database: MS SQL Server
- ORM: Sequelize
- Autentikasi: JWT (jsonwebtoken)
- Validasi: fastest-validator
- Password Hashing: bcrypt
- View Engine: EJS
Sebelum menjalankan proyek ini, pastikan Anda telah menginstal:
- Node.js (versi terbaru)
- MS SQL Server
- NPM atau Yarn
git clone https://github.com/faiz-hidayat/restful-api-sequelize.git
cd restful-api-sequelize
npm install
Buka file config/config.json
dan sesuaikan konfigurasi database:
{
"development": {
"username": "username_anda",
"password": "password_anda",
"database": "nama_database_anda",
"host": "localhost",
"dialect": "mssql"
}
}
Buat file .env
dan isi dengan JWT secret key:
JWT_SECRET=kunci_rahasia_anda
npx sequelize-cli db:migrate
npx sequelize-cli db:seed:all
npm start
Server akan berjalan di http://localhost:3000
- POST /users/signup - Registrasi pengguna baru
- POST /users/signin - Login pengguna
- GET /users - Mendapatkan semua data pengguna
- GET /users/:id - Mendapatkan data pengguna berdasarkan ID
- PATCH /users/:id - Memperbarui data pengguna berdasarkan ID
- DELETE /users/:id - Menghapus (soft delete) pengguna berdasarkan ID
Request:
POST /users/signup
{
"username": "contohuser",
"email": "user@example.com",
"password": "password123",
"fullname": "Nama Lengkap",
"bio": "Bio singkat"
}
Response:
{
"success": true,
"message": "User registered successfully",
"data": {
"id": 1,
"username": "contohuser",
"email": "user@example.com",
"fullname": "Nama Lengkap",
"bio": "Bio singkat"
}
}
Request:
POST /users/signin
{
"email": "user@example.com",
"password": "password123"
}
Response:
{
"success": true,
"message": "Login successful",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"username": "contohuser",
"email": "user@example.com",
"fullname": "Nama Lengkap"
}
}
.
βββ bin/ # Script startup aplikasi
βββ config/ # Konfigurasi database
βββ controllers/ # Logic aplikasi
βββ middlewares/ # Middleware seperti autentikasi
βββ migrations/ # Migrasi database Sequelize
βββ models/ # Model Sequelize
βββ public/ # File statis (CSS, JS, dll)
βββ routes/ # Definisi rute API
βββ seeders/ # Seeder data awal untuk database
βββ views/ # Template EJS
βββ .env # Variabel lingkungan
βββ .gitignore # File yang diabaikan Git
βββ app.js # Entry point aplikasi
βββ package.json # Dependensi dan script
Proyek ini menggunakan lisensi MIT.