const express = require('express'); const cors = require('cors'); const survey_routes = require('./routes/survey_routes'); const auth_routes = require('./routes/auth_routes'); const admin_routes = require('./routes/admin_routes'); const map_routes = require('./routes/map_routes'); // Menginisialisasi aplikasi Express const app = express(); const port = 3000; // Praktik keamanan: Mengaktifkan CORS agar API hanya bisa diakses oleh domain frontend yang diizinkan (atau semua domain saat masa pengembangan) app.use(cors()); // Membaca JSON dari body request app.use(express.json()); // Mendaftarkan rute API utama app.use('/api/survey', survey_routes); app.use('/api/auth', auth_routes); app.use('/api/admin', admin_routes); app.use('/api/map', map_routes); // Menangkap request ke rute yang tidak terdaftar app.use((req, res, next) => { // Baris kompleks: Middleware ini menangkap semua lalu lintas HTTP (GET, POST, dll) yang tidak cocok dengan definisi rute di atasnya. Hal ini mencegah kebocoran informasi stack trace default dari Express dan mengembalikan respons JSON standar yang aman. res.status(404).json({ error: 'Endpoint yang Anda cari tidak ditemukan di server ini.' }); }); // Menangkap error parsing JSON app.use((err, req, res, next) => { console.error('Kesalahan server global:', err.message); res.status(500).json({ error: 'Terjadi kesalahan sistem internal.' }); }); // Menjalankan server app.listen(port, () => { console.log(`Server WebGIS berjalan dan siap diakses pada port ${port}`); });