39 lines
1.5 KiB
JavaScript
39 lines
1.5 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);
|
|
|
|
// 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}`);
|
|
}); |