47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
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);
|
|
|
|
// Jika folder frontend Anda bernama 'ui'
|
|
app.use(express.static('ui'));
|
|
|
|
// Mengarahkan pengguna yang mengakses URL kosong langsung ke index.html
|
|
app.get('/', (req, res) => {
|
|
res.redirect('/index.html');
|
|
});
|
|
|
|
// 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}`);
|
|
}); |