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('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 }
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 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 () {
console.log('Сервер ожидает подключения...')
})