const express = require('express')
const app = express()
const port = 3000 // 한 번에 여러개의 포트를 열 수 있음
const users = [
{
id: 1, // id는 우리만 알고 있는 것이기 때문에 별도로 부여해 줘야 함
name: "james",
username: "joker",
email: "james101@gmail.com",
phonenumber: "123-456-7979",
},
{
id: 2,
name: "christine",
username: "crystal",
email: "christine101@gmail.com",
phonenumber: "453-326-1299",
},
{
id: 3,
name: "jammie",
username: "jam",
email: "jammie101@gmail.com",
phonenumber: "963-332-3719",
},
];
app.get("/", (req, res) => {
res.send("Welcome !!!");
});
app.get("/users", (req, res) => {
res.json(users);
});
app.get("/users/:userId", (req, res) => {
// console.log(req.params.userId);
const user = users.find((user) => user.id === parseInt(req.params.userId));
if (!user) {
res.status(404).send('요청한 UserId를 찾을 수 없습니다.')
}
res.status(200).json(user);
// status는 상태코드로 200은 성공을 의미함
});
app.post("/users", (req,res) => {
const newUser = req.body;
if (Object.keys(newUser).length === 0) { // 빈 객체인 경우 오류 400
res.status(400).send('User에 관한 정보를 입력해주세요.');
} else if (Object.keys(newUser).length < 4) { // 4개 정보가 모두 나오지 않을 경우 오류 400
res.status(400).send('User를 추가하기 위해 필요한 정보를 모두 입력해주세요')
} else {
users.push({
id: users[users.length - 1].id + 1,
// 중복을 방지하기 위해 마지막 유저의 아이디에 1을 더함
...newUser,
});
}
res.json(users);
})
app.put("/users/:userId", (req, res) => {
const id = users.findIndex(user => user.id === parseInt(req.params.userId));
if (id === -1) {
return res.status(404).send('요청한 id를 찾을 수 없습니다.');
}
users[id] = {
...users[id],
...req.body
}
res.status(200).json(users);
})
app.delete("/users/:userId", (req, res) => {
const id = users.findIndex(
(user) => user.id === parseInt(req.params.userId)
);
if (id === -1) {
return res.status(404).send("요청한 id를 찾을 수 없습니다.");
}
users.splice(id, 1);
res.status(200).json(users);
})
app.listen(port,() => {
console.log('서버 실행중...')
})