
url를 적을때는 전체조회를 생각해서, 복수형으로 적어둔 다음에 (예를들어 상품들 보여주거나, 유튜버들 보여주거나 할때)
id값을 각각 부여해서 각 상품이나 유튜버들을 보여주는 것이 더 맞아. 그래서 복수형을 보통 많이 사용하고,
전체 조회를 할때는 req는 따로 필요없고,
res로 map을 전체 조회하면 보여줄 수 있지 않을까?
자 그래서
app.get("/youtubers", function (req, res) {
console.log(db.set());
res.json(db.set());
});
이렇게 적어봤는데, 이게 콘솔에서는 뜨지만 포스트맨에서는 제대로 보여주지 않고 있어.
그럼 이게 값을 불러오는 것은 맞지만, 포스트맨에서는 이게 아직 db를 못 불러오는구나. 를 알 수 있고,
그럼 어떻게 해결하면 될까?
app.get("/youtubers", function (req, res) {
var youtubers = {};
db.forEach(function (value, key) {
youtubers[key] = value;
});
res.json(youtubers);
/*
res.json(JSON.stringify(jsonObject)); JSON.stringify() : json 형태로 바꿔주는 메서드 인데, 확인해보니 안예뻐서 안써도 될듯
}); */
});
이렇게 하니까 이제 전체 조회를 할 수 있게 되었어.
너무 좋다 그치? for Each로 function의 밸류와 키 값을 불러오고, youtubers 라는 변수에 json형식으로 키 밸류를 담고,
res.json(youtubers);를 하니까 잘 나오더라구
너무 좋네.
이 상태에서 새로운 유튜버를 하나 더 추가하고 싶으면 과연 잘 추가가 되서 전체조회에서 나올까?
확인하면 되지



//express 모듈 셋팅
const express = require("express");
const app = express();
//서버 셋팅 : 포트 넘버(번호) 3000으로 셋팅
app.listen(3000);
let youtuber1 = {
channelTitle: "십오야",
sub: "713만명",
videoNum: "1000개",
};
let youtuber2 = {
channelTitle: "침착맨",
sub: "300만명",
videoNum: "8000개",
};
let db = new Map(); //map은 key - values 쌍으로 이루어진 자료구조, 즉 json같은 느낌이다.
var id = 1;
db.set(id++, youtuber1);
db.set(id++, youtuber2);
// GET + "/" 및 REST API 설계 -> 파라미터는 문자열로 들어오기 때문에, 숫자열로 바꿔줘야해 id를
app.get("/youtubers", function (req, res) {
var youtubers = {};
db.forEach(function (value, key) {
youtubers[key] = value;
});
res.json(youtubers);
/*
res.json(JSON.stringify(jsonObject)); JSON.stringify() : json 형태로 바꿔주는 메서드 인데, 확인해보니 안예뻐서 안써도 될듯
}); */
});
app.get("/youtuber/:id", function (req, res) {
let { id } = req.params;
id = parseInt(id);
const youtuber = db.get(id);
if (youtuber == undefined) {
res.json({
message: "유튜버 정보를 찾을 수 없어",
});
} else {
res.json(youtuber);
}
});
app.use(express.json()); //http 외 모듈인 '미들웨어':json 설정
app.post("/youtuber/", function (req, res) {
// BODY에 숨겨져서 들어온 데이터를 화면에 뿌려줘볼까?
console.log(req.body);
//이제 등록을 해줘야 하는데 Map(db)에 저장(put) 해주셔야 함.
db.set(id++, req.body); //4라는 id값을 가지고 있는 새로운 유튜버를 db에 저장하는 코드(객체를 넣어줘야해)
res.json({
message: `${db.get(id - 1).channelTitle} 님 유튜버 생활을 응원합니다!`,
});
});