Files
TIS-lab4/app.js
Yankovskaya Natalia 3d15d4bea7 v2-local-js-css
2023-10-25 12:23:05 +03:00

141 lines
3.9 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const express = require("express");
const bodyParser = require("body-parser");
const fs = require("fs");
const { join } = require("path");
const { log } = require("console");
const app = express();
const jsonParser = bodyParser.json();
app.use(
"/bootstrap",
express.static(join(__dirname, "node_modules/bootstrap/dist"))
);
app.use("/jquery", express.static(join(__dirname, "node_modules/jquery/dist")));
// app.use(express.static(__dirname + 'public'));
// получение списка данных
// app.use("/index", express.static(join(__dirname + "public")))
app.get("/", function (req, res) {
res.sendFile(join(__dirname, "index.html"));
});
app.get("/api/users", function (req, res) {
var content = fs.readFileSync("users.json", "utf8");
var users = JSON.parse(content);
res.send(users);
});
// получение одного пользователя по id
app.get("/api/users/:id", function (req, res) {
var id = req.params.id; // получаем id
var content = fs.readFileSync("users.json", "utf8");
var users = JSON.parse(content);
var user = null;
// находим в массиве пользователя по id
for (var i = 0; i < users.length; i++) {
if (users[i].id == id) {
user = users[i];
break;
}
}
// отправляем пользователя
if (user) {
res.send(user);
} else {
res.status(404).send();
}
});
// получение отправленных данных
app.post("/api/users", jsonParser, function (req, res) {
if (!req.body) return res.sendStatus(400);
var userName = req.body.name;
var userAge = +req.body.age;
var user = { name: userName, age: userAge };
if (fs.existsSync("users.json")) {
var data = fs.readFileSync("users.json", "utf8");
var users = JSON.parse(data);
} else {
fs.writeFileSync("users.json");
}
// находим максимальный id
var maxid = Math.max.apply(
Math,
users.map(function (o) {
return o.id;
})
);
// увеличиваем его на единицу
user.id = maxid + 1;
// добавляем пользователя в массив
users.push(user);
var data = JSON.stringify(users);
// перезаписываем файл с новыми данными
fs.writeFileSync("users.json", data);
res.send(user);
});
// удаление пользователя по id
app.delete("/api/users/:id", function (req, res) {
var id = req.params.id;
var data = fs.readFileSync("users.json", "utf8");
var users = JSON.parse(data);
var index = -1;
// находим индекс пользователя в массиве
for (var i = 0; i < users.length; i++) {
if (users[i].id == id) {
index = i;
break;
}
}
if (index > -1) {
// удаляем пользователя из массива по индексу
var user = users.splice(index, 1)[0];
var data = JSON.stringify(users);
fs.writeFileSync("users.json", data);
// отправляем удаленного пользователя
res.send(user);
} else {
res.status(404).send();
}
});
// изменение пользователя
app.put("/api/users", jsonParser, function (req, res) {
if (!req.body) return res.sendStatus(400);
var userId = req.body.id;
var userName = req.body.name;
var userAge = req.body.age;
var data = fs.readFileSync("users.json", "utf8");
var users = JSON.parse(data);
var user;
for (var i = 0; i < users.length; i++) {
if (users[i].id == userId) {
user = users[i];
break;
}
}
// изменяем данные у пользователя
if (user) {
user.age = userAge;
user.name = userName;
var data = JSON.stringify(users);
fs.writeFileSync("users.json", data);
res.send(user);
} else {
res.status(404).send(user);
}
});
app.listen(3000, function () {
log("Сервер на порту 3000");
});