Hallo Suhu semuanya semoga kita selalu dalam keadaan sehat walafiat, ini merupakan dokumentasi ane yang sedang belajar.
Pada thread ini yaitu bagaimana cara membuat RESTfull API untuk Register dan Login menggunakan Express.js dan MongoDB, ada beberapa langkah yang perlu diikuti. Pastikan Anda sudah menginstal Node.js dan MongoDB sebelum memulai. Berikut adalah tutorial langkah demi langkahnya:
Langkah 1: Persiapan Projek
Struktur folder projek yang sering saya gunakan sebagai berikut:
Langkah 3: Konfigurasi Database
Buka file User.js di folder models dan tambahkan kode berikut untuk mendefinisikan model User:
Langkah 5: Membuat Routes untuk Register dan Login
Buka file auth.js di folder routes dan tambahkan kode berikut untuk menangani registrasi dan login:
Langkah 6: Membuat Server
Buka file index.js dan tambahkan kode berikut untuk membuat server dan menghubungkannya dengan MongoDB:
Jangann lupa tambahkan ini pada 'package.json'
Instal dahulu
Langkah 7: Menjalankan Aplikasi
Jalankan aplikasi dengan perintah berikut:
Selanjutnya tinggal coba pada postman :
Kemudian coba endpoint Login :
Mungkin hanya segitu saja yang saya sampaikan, mohon maaf atas kekurangannya. Terima kasih
Mari diskusi suhu semua jika berkenan
Pada thread ini yaitu bagaimana cara membuat RESTfull API untuk Register dan Login menggunakan Express.js dan MongoDB, ada beberapa langkah yang perlu diikuti. Pastikan Anda sudah menginstal Node.js dan MongoDB sebelum memulai. Berikut adalah tutorial langkah demi langkahnya:
Langkah 1: Persiapan Projek
- Buat folder untuk projek dan masuk ke dalamnya melalui terminal atau command prompt.
- Inisialisasi projek Node.js dengan perintah berikut:
Bash:npm init
- Install beberapa dependensi yang akan digunakan (Express.js, MongoDB driver, dll):
-
Bash:
npm install express mongoose bcryptjs jsonwebtoken body-parser
Struktur folder projek yang sering saya gunakan sebagai berikut:
Markdown (GitHub flavored):
- your_project_folder
- node_modules
- src
- models
- User.js
- routes
- auth.js
- index.js
- .env
Langkah 3: Konfigurasi Database
- Buat akun MongoDB atau pastikan Anda sudah memiliki satu.
- Buat file .env di folder projek dan tambahkan informasi koneksi database MongoDB:
-
Bash:
MONGODB_URI=mongodb://username:password@host:port/database_name SECRET_KEY=your_secret_key_for_jwt
Buka file User.js di folder models dan tambahkan kode berikut untuk mendefinisikan model User:
JavaScript:
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
});
const User = mongoose.model('User', userSchema);
module.exports = User;
Langkah 5: Membuat Routes untuk Register dan Login
Buka file auth.js di folder routes dan tambahkan kode berikut untuk menangani registrasi dan login:
JavaScript:
const express = require('express');
const router = express.Router();
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const User = require('../models/User');
// Route untuk registrasi pengguna
router.post('/register', async (req, res) => {
try {
const { username, password } = req.body;
// Cek apakah username sudah ada dalam database
const existingUser = await User.findOne({ username });
if (existingUser) {
return res.status(400).json({ message: 'Username already exists' });
}
// Hash password menggunakan bcrypt
const hashedPassword = await bcrypt.hash(password, 10);
// Buat user baru dalam database
const newUser = new User({
username,
password: hashedPassword,
});
await newUser.save();
res.status(201).json({ message: 'User registered successfully' });
} catch (error) {
res.status(500).json({ message: 'Error registering user' });
}
});
// Route untuk login pengguna
router.post('/login', async (req, res) => {
try {
const { username, password } = req.body;
// Cari pengguna berdasarkan username dalam database
const user = await User.findOne({ username });
if (!user) {
return res.status(400).json({ message: 'Invalid username or password' });
}
// Periksa kecocokan password menggunakan bcrypt
const isPasswordMatch = await bcrypt.compare(password, user.password);
if (!isPasswordMatch) {
return res.status(400).json({ message: 'Invalid username or password' });
}
// Buat token JWT untuk otentikasi
const token = jwt.sign({ userId: user._id }, process.env.SECRET_KEY);
res.json({ token });
} catch (error) {
res.status(500).json({ message: 'Error logging in' });
}
});
module.exports = router;
Langkah 6: Membuat Server
Buka file index.js dan tambahkan kode berikut untuk membuat server dan menghubungkannya dengan MongoDB:
JavaScript:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const dotenv = require('dotenv');
const authRoutes = require('./routes/auth');
dotenv.config();
const app = express();
const PORT = process.env.PORT || 3000;
// Menghubungkan ke database MongoDB
mongoose.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
}).then(() => {
console.log('Connected to MongoDB');
}).catch((err) => {
console.error('Error connecting to MongoDB:', err.message);
process.exit(1);
});
app.use(bodyParser.json());
// Route untuk registrasi dan login
app.use('/api/auth', authRoutes);
app.listen(PORT, () => {
console.log(`Server started on port ${PORT}`);
});
Jangann lupa tambahkan ini pada 'package.json'
Instal dahulu
Bash:
npm install nodemon dotenv
JSON:
"start": "node src/index.js",
"dev": "nodemon src/index.js"
Langkah 7: Menjalankan Aplikasi
Jalankan aplikasi dengan perintah berikut:
Bash:
npm run dev
Selanjutnya tinggal coba pada postman :
Kemudian coba endpoint Login :
- Jika Username dan Password salah:
- Ketika Berhasil
Mungkin hanya segitu saja yang saya sampaikan, mohon maaf atas kekurangannya. Terima kasih
Mari diskusi suhu semua jika berkenan