-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
138 lines (119 loc) · 3.84 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
let express = require("express");
let bodyParser = require("body-parser");
let fs = require("fs");
let app = express();
let jsonParser = bodyParser.json();
app.use(express.static(__dirname + "/public"));
// отримання списку даних
app.get("/api/users", (req, res) => {
let content = fs.readFileSync("users/users.json", "utf8");
let users = JSON.parse(content);
res.send(users);
});
// отримання одного користувача по id
app.get("/api/users/:id", (req, res) => {
let id = req.params.id;
let content = fs.readFileSync("users/users.json", "utf8");
let users = JSON.parse(content);
let user = null;
// знаходимо користувача в масиві по id
for(let 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, (req, res) => {
if(!req.body || isEmptyObj(req.body) ) {
return res.sendStatus(400);
}
let userName = req.body.name;
let surname = req.body.surname;
let userAge = req.body.age;
let user = {name: userName, surname: surname, age: userAge};
let data = fs.readFileSync("users/users.json", "utf8");
let users = JSON.parse(data);
// Знаходимо максимальний id
let id = Math.max.apply(Math,users.map(function(elem){return elem.id;}));
// збільшуємо його на 1
if(id == -Infinity){
user.id = 1;
} else {
user.id = ++id;
}
// добавляєм користувача в масив
users.push(user);
data = JSON.stringify(users);
// перезаписуєм файл з користувачами
fs.writeFileSync("users/users.json", data);
res.send(user);
});
// видаляємо користувача по id
app.delete("/api/users/:id", (req, res) => {
let id = req.params.id;
let data = fs.readFileSync("users/users.json", "utf8");
let users = JSON.parse(data);
let index = -1;
// знаходимо індекс користувача в масиві
for(let i = 0; i < users.length; i++){
if(users[i].id == id){
index=i;
break;
}
}
if(index > -1){
// видаляємо користувача із масиву по id
let user = users.splice(index, 1)[0];
let data = JSON.stringify(users);
fs.writeFileSync("users/users.json", data);
// відправляємо видаленого користувача
res.send(user);
} else {
res.status(404).send();
}
});
// змінення даних користувача
app.put("/api/users", jsonParser,(req, res) => {
if(!req.body || isEmptyObj(req.body) ) {
return res.sendStatus(400);
}
let userId = req.body.id;
let userName = req.body.name;
let surname = req.body.surname;
let userAge = req.body.age;
let data = fs.readFileSync("users/users.json", "utf8");
let users = JSON.parse(data);
let user;
for(let i = 0; i < users.length; i++){
if(users[i].id == userId){
user = users[i];
break;
}
}
if(user){
user.age = userAge;
user.name = userName;
user.surname = surname;
let data = JSON.stringify(users);
fs.writeFileSync("users/users.json", data);
res.send(user);
} else {
res.status(404).send(user);
}
});
function isEmptyObj(obj) {
for(let key in obj) {
return false;
}
return true;
}
app.listen(3000, () => { console.log("Server start - localhost:3000"); });
module.exports.app = app;