67 lines
1.9 KiB
JavaScript
67 lines
1.9 KiB
JavaScript
const express = require("express");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
const cors = require("cors");
|
|
|
|
const app = express();
|
|
const PORT = 4000;
|
|
|
|
// Ścieżki do plików JSON
|
|
const UCZNIOWIE_FILE = path.join(__dirname, "uczniowie.json");
|
|
const KRYTERIA_FILE = path.join(__dirname, "kryteria.json");
|
|
const DANE_FILE = path.join(__dirname, "dane.json");
|
|
|
|
// Middleware do obsługi JSON i CORS
|
|
app.use(express.json());
|
|
app.use(cors());
|
|
|
|
// Endpoint do pobierania listy uczniów
|
|
app.get("/uczniowie", (req, res) => {
|
|
fs.readFile(UCZNIOWIE_FILE, "utf8", (err, data) => {
|
|
if (err) {
|
|
console.error("Błąd odczytu uczniów:", err);
|
|
return res.status(500).send("Błąd odczytu uczniów.");
|
|
}
|
|
res.json(JSON.parse(data));
|
|
});
|
|
});
|
|
|
|
// Endpoint do pobierania listy kryteriów
|
|
app.get("/kryteria", (req, res) => {
|
|
fs.readFile(KRYTERIA_FILE, "utf8", (err, data) => {
|
|
if (err) {
|
|
console.error("Błąd odczytu kryteriów:", err);
|
|
return res.status(500).send("Błąd odczytu kryteriów.");
|
|
}
|
|
res.json(JSON.parse(data));
|
|
});
|
|
});
|
|
|
|
// Endpoint do pobierania danych uczniów
|
|
app.get("/dane", (req, res) => {
|
|
fs.readFile(DANE_FILE, "utf8", (err, data) => {
|
|
if (err) {
|
|
console.error("Błąd odczytu danych:", err);
|
|
return res.status(500).send("Błąd odczytu danych.");
|
|
}
|
|
res.json(JSON.parse(data));
|
|
});
|
|
});
|
|
|
|
// Endpoint do zapisywania danych uczniów
|
|
app.post("/dane", (req, res) => {
|
|
const newData = req.body;
|
|
|
|
fs.writeFile(DANE_FILE, JSON.stringify(newData, null, 2), err => {
|
|
if (err) {
|
|
console.error("Błąd zapisywania danych:", err);
|
|
return res.status(500).send("Błąd zapisywania danych.");
|
|
}
|
|
res.send("Dane zapisane pomyślnie.");
|
|
});
|
|
});
|
|
|
|
// Uruchomienie serwera
|
|
app.listen(PORT, () => {
|
|
console.log(`Serwer API działa na http://localhost:${PORT}`);
|
|
}); |