Files
LAB5/1/app.js
MishaBagger 0956275ec4 MACHIN
2023-11-08 13:41:29 +03:00

118 lines
3.6 KiB
JavaScript
Raw 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.

var express = require('express');
var bodyParser = require('body-parser');
var fs = require('fs');
var app = express();
var jsonParser = bodyParser.json();
app.use(express.static(__dirname + '/public'));
// получение списка данных
app.get('/api/users', function (req, res) {
var content = fs.readFileSync('list.json', 'utf8');
var list = JSON.parse(content);
res.send(list);
});
// получение одного пользователя по id
app.get('/api/users/:id', function (req, res) {
var id = req.params.id; // получаем id
var content = fs.readFileSync('list.json', 'utf8');
var list = 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 userDate = req.body.date;
var user = { name: userName, date: userDate };
var data = fs.readFileSync('users.json', 'utf8');
var users = JSON.parse(data);
// находим максимальный id
var id = Math.max.apply(
Math,
users.map(function (o) {
return o.id;
})
);
// увеличиваем его на единицу
user.id = id + 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 userDate = req.body.date;
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.date = user;
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 () {
console.log('Сервер ожидает подключения...');
});