📌 핸들러란?
- 요청에 의해 호출되는 메서드
- HTTP request가 날아오면 자동으로 호출되는 메서드
- 노드에서는 → 콜백함수로, app.HTTPMETHOD(path, handler)
json array, find(), 예외처리
const express = require('express')
const app = express()
app.listen(1234)
const fruits = [
{ id: 1, name: "apple" },
{ id: 2, name: "banana" },
{ id: 3, name: "strawberry" },
{ id: 4, name: "blueberrry" }
];
app.get('/fruits', function (req, res) {
res.json(fruits);
})
app.get('/fruits/:id', function (req, res) {
let id = parseInt(req.params.id);
let findFruit =
fruits.find(f => (f.id === id));
if (findFruit) {
res.json(findFruit);
} else {
res.status(404).send(
"전달주신 id가 없습니다."
)
}
})
find 함수에 대해서 잘 알아두자
- 예외처리시
HTTP 코드를 변경시킨 후 에러메세지 출력하기
== vs ===
if (1 == "1") {
console.log("same");
} else {
console.log("different");
}
if (1 === "1") {
console.log("same");
} else {
console.log("different");
}
Youtuber demo 예외 고도화해보기
- 에러처리를 HTTP코드를 변경해줌으로써 고도화 해보자
const express = require('express');
const app = express();
app.listen(1234);
let youtuber1 = {
channelTitle: "십오야",
subscriber: "593만명",
videoNum: "993개"
}
let youtuber2 = {
channelTitle: "침착맨",
subscriber: "227만명",
videoNum: "6600개"
}
let youtuber3 = {
channelTitle: "테오",
subscriber: "100만명",
videoNum: "1100개"
}
let db = new Map();
let id = 1
db.set(id++, youtuber1);
db.set(id++, youtuber2);
db.set(id++, youtuber3);
app.get('/youtubers/:id', function (req, res) {
let { id } = req.params;
id = parseInt(id);
const youtuber = db.get(id);
if (youtuber == undefined) {
res.status(404).json({
message: "Wrong Access"
})
} else {
res.json(youtuber);
}
})
app.get('/youtubers', function (req, res) {
let youtubers = {};
if (db.size!==0) {
db.forEach(function (value, key) {
youtubers[key] = value;
})
res.json(youtubers);
} else {
res.status(404).json({
message:'조회할 유튜버가 없습니다'
})
}
})
app.use(express.json());
app.post('/youtubers', function (req, res) {
console.log(req.body);
const channelTitle = req.body.channelTitle;
if (channelTitle) {
db.set(id++, req.body);
res.json({
message: `${req.body.channelTitle}님, 유튜버 생활을 응원합니다`
});
} else {
res.status(400).json({
message:'요청 값을 제대로 보내주세요'
})
}
})
app.delete('/youtubers/:id', function (req, res) {
let { id } = req.params;
id = parseInt(id);
let youtuber = db.get(id);
if (youtuber == undefined ) {
res.status(404).json({
message: `요청하신 ${id}번은 없는 정보입니다`
})
} else {
const channelTitle =youtuber.channelTitle;
db.delete(id);
res.json({
message: `${channelTitle}님 다음에 또 뵙겠습니다.`
})
}
})
app.delete('/youtubers', function (req, res) {
if (db.size >= 1) {
db.clear();
res.json({
message: '전체 유튜버가 삭제되었습니다.'
})
} else {
res.json({
message: '삭제할 유튜버가 없습니다.'
})
}
})
app.put('/youtubers/:id', function (req, res) {
let { id } = req.params;
id = parseInt(id);
let youtuber = db.get(id);
let prevChannelTitle = youtuber.channelTitle
if (youtuber) {
res.status(404).json({
message: `요청하신 ${id}번은 없는 정보입니다`
})
} else {
let newChannelTitle = req.body.channelTitle;
youtuber.channelTitle = newChannelTitle;
db.set(id, youtuber);
res.json({
message: `${prevChannelTitle}님, 채널명이 ${newChannelTitle}로 변경되었습니다`
})
}
})
회원 API 설계하기
회원
- 로그인 : POST/login
- req : body(id, pwd)
- res :
${name}님 환영합니다 -> 메인 페이지
- 회원 가입: POST/join
- req: body (id, pwd, name)
- res:
${name}님 환영합니다 → 로그인 페이지
- 회원 개별 정보 조회 : GET/users/:id
- req: URL (id)
- res: id, name
- 회원 개별 탈퇴 : DELETE/users/:id
- req : URL (id)
- res : 탈퇴가 완료되었습니다.
- 회원은 계정 1개당 채널 100개를 가질 수 있다.
채널
const express = require('express');
const app = express()
app.listen(7777);
app.use(express.json())
let db = new Map();
let id = 1;
app.post('/login', function (req, res) {
})
app.post('/join', function (req, res) {
console.log(req.body);
if (Object.keys(req.body).length !== 0) {
db.set(id++, req.body);
res.status(201).json({
message: `${req.body.name}님 환영합니다.`,
});
} else {
res.status(400).json({
message: `입력값을 다시 확인해주세요.`
});
}
});
app.get('/users/:id', function (req, res) {
let { id } = req.params;
id = parseInt(id);
const user = db.get(id);
if (user) {
res.status(200).json({
userId: user.userId,
name : user.name
})
} else {
res.status(404).json({
message : '잘못된 아이디 번호입니다'
})
}
})
app.delete('/users/:id', function (req, res) {
let { id } = req.params;
id = parseInt(id);
const user = db.get(id);
if (user) {
db.delete(id);
res.status(200).json({
message: `${user.name}님 다음에 또 뵙겠습니다`
})
} else {
res.status(404).json({
message : '잘못된 아이디 번호입니다'
})
}
})


