Express에서 Params를 빼올 때 req.params를 했던 것처럼 처음에는 req.body를 해보려고 했는데



이럴수가 req.body가 undefined라고? 그러면 어떻게 빼올 수 있을까?
해답은 app.use(express.json()); 를 넣어야하는 것이다.
![]() | ![]() |
|---|
다음과 같이 json 형식으로 요청을 보내니 콘솔에 body가 무사히 전달된 모습이다.

key로 value 또한 무사히 가져온 모습이다.

res.json(req.body) 로 코드를 바꾸니

리턴값도 json 형식으로 나온 모습이다.
기존 유튜버 조회 api에서 유튜버 생성 api를 만들어볼게요
body로 channelTitle 을 넣으면, 서버에서 sub 과 videoNum 을 0으로 만들어서 새로운 유튜버를 만들도록 했어요.
app.post('/youtubers', (req, res) => {
const youtuber = req.body;
const newYoutuber = {
...youtuber,
sub: 0,
videoNum: 0,
};
const newYoutuberId = db.size === 0 ? 1 :Math.max(...db.keys()) + 1;
db.set(newYoutuberId, newYoutuber);
res.json(`${newYoutuber.channelTitle} 등록 완료`);
});
저는 이런식으로 처음에 작성했어요.
db가 비면 1, 아니면 autoincrement를 만들어서 db에 set했어요.
에러 처리등 신경쓰이는 곳이 한 두곳이 아니지만 가장 원초적으로 만들었어요.

구현하고 강의를 마저 봤더니 그냥 body로 모든 정보를 다 넣어서 조금 당황하긴했지만, 일단 post를 해보는 경험이니 받아들였어요.

GET 요청으로 새롭게 생성된 4번 객체도 가져오는 모습이에요
autoincrement 를 강의에서는
let db = new Map();
var id = 1;
db.set(id++, youtuber1);
db.set(id++, youtuber2);
db.set(id++, youtuber3)
우선 이렇게 var로 전역변수 id를 만들었고 ,
const newYoutuberId = db.size === 0 ? 1 :Math.max(...db.keys()) + 1;
// db.set(newYoutuberId, newYoutuber);
db.set(id++, newYoutuber);
res.json(`${newYoutuber.channelTitle} 등록 완료`);
id++ 를 통해 가지고 db에 등록했어요.
app.get('/youtubers', (req, res) => {
res.json(Array.from(db.values()));
})
저는 이렇게 Array.from 으로 Map을 배열로 만들어서 반환시켰어요.
그리고 youtubers 처럼 복수형으로 설계하는 것이 맞다고 생각했어요.

결과도 잘 나온 모습이에요.