118 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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('Сервер ожидает подключения...');
 | ||
| });
 | 
