POST 를 통해 입력된 아이디가 db에 저장된 회원인지 확인한다.우선은 간단하게 구현해보자
const express = require('express');
const app = express()
app.listen(7777);
app.use(express.json()) // http 외 모듈 'json' 사용
let db = new Map();
let id = 1; //객체 식별 아이디
// 로그인
app.post('/login', function (req, res) {
console.log(req.body); //id, pwd
//id가 db에 저장된 회원인지 확인
const { userId, password } = req.body;
db.forEach(function (user, id) {
//console.log(user.userId);
if (user.userId === userId) {
console.log('ID 매칭 성공');
//넘어온 pwd가 id에 맞는 비밀번호인지
if (user.password === password) {
console.log("password 매칭성공");
} else {
console.log("password 매칭 실패");
}
}
})
})
// 회원 가입
app.post('/join', function (req, res) {
console.log(req.body);
// 입력된 body 객체가 비어 있지 않은지 확인
if (Object.keys(req.body).length !== 0) {
// 예시로 ID를 부여하는 방식을 간단히 시뮬레이션
db.set(id++, req.body);
res.status(201).json({
message: `${req.body.name}님 환영합니다.`
});
} else {
res.status(400).json({
message: `입력값을 다시 확인해주세요.`
});
}
});

기본적인 기능은 잘 작동한다.
const express = require('express');
const app = express()
app.listen(7777);
app.use(express.json()) // http 외 모듈 'json' 사용
let db = new Map();
let id = 1; //객체 식별 아이디
// 로그인
app.post('/login', function (req, res) {
console.log(req.body); //id, pwd
//id가 db에 저장된 회원인지 확인
const { userId, password } = req.body;
//let hasUserId = false;
let loginUser = {};
db.forEach(function (user, id) {
//console.log(user.userId);
if (user.userId === userId) {
loginUser = user;
}
})
if (loginUser) {
console.log('ID 매칭 성공');
//넘어온 pwd가 id에 맞는 비밀번호인지
if (loginUser.password === password) {
console.log("password 매칭성공");
} else {
console.log("password 매칭 실패");
}
} else {
console.log('입력하신 아이디는 없는 아이디 입니다.');
}
})
if (loginUser)가 의미하는 바는, 객체가 비어있을 경우 다시 말해, 위에forEach문에서 아무것도 찾지 못했을 때를 의미하는데, 빈 객체도 비어있는것으로 해석하지 않기 때문에 다른 방법을 찾아야한다.
const obj1 = {};
const obj2 = { message: '비어있지 않음' };
const num = 1;
const str = "one";
const str2 = ""; // 문자열도 객체입니다.?? -> 객체처럼 사용한다는게 맞는 말인듯
console.log(Object.keys(obj1).length === 0); // length === 0
console.log(Object.keys(obj2).length !== 0); // length === 1
console.log(Object.keys(num).length); // 0
console.log(Object.keys(str).length); // 3
console.log(Object.keys(str2).length); // 3
function isEmpty(obj) {
if (Object.keys(obj).length === 0) return true;
else return false;
}
const express = require('express');
const app = express()
app.listen(7777);
app.use(express.json()) // http 외 모듈 'json' 사용
let db = new Map();
let id = 1; //객체 식별 아이디
function isExist(obj) {
if (Object.keys(obj).length) return true;
else return false;
}
// 로그인
app.post('/login', function (req, res) {
console.log(req.body); //id, pwd
//id가 db에 저장된 회원인지 확인
const { userId, password } = req.body;
//let hasUserId = false;
let loginUser = {};
db.forEach(function (user, id) {
//console.log(user.userId);
if (user.userId === userId) {
loginUser = user;
}
})
if (isExist(loginUser)) {
console.log('ID 매칭 성공');
//넘어온 pwd가 id에 맞는 비밀번호인지
if (loginUser.password === password) {
console.log("password 매칭성공");
} else {
console.log("password 매칭 실패");
}
} else {
console.log('입력하신 아이디는 없는 아이디 입니다.');
}
})
URL, http methods/status, req, res 를 모두 고려해보자
- 채널
- 채널 생성
- 채널 수정
- 채널 삭제
- 채널 생성 : POST/channels
- req : channelTitle
- res 201 : 완료 메세지
- 채널 개별 수정: PUT/channels/:id
- req : URL (id), 수정할 데이터 (채널명)
- res 200 : 완료 메세지
- 채널 개별 삭제 : DELETE/channels/:id
- req : URL(id)
- res 200: 완료 메세지
- 채널 전체 조회 : GET/channels
- req : X
- res 200: 전체 조회 데이터
- 채널 개별 조회 : GET/channels/:id
- req : URL(id)
- res 200 : 개별 조회 데이터
const express = require('express');
const app = express();
app.listen(7777);
app.use(express.json());
let db = new Map();
let id = 1;
//채널 개별 생성
app.post('/channels');
//채널 개별 수정
app.put('/channels/:id');
//채널 개별 삭제
app.delete('/channels/:id');
//채널 전체 조회
app.get('/channels');
//채널 개별 조회
app.get('/channels/:id');
const express = require('express');
const app = express();
app.listen(7777);
app.use(express.json());
let db = new Map();
let id = 1;
app
.route('/channels')
.get((req, res) => {
res.send("개별 생성")
}) //채널 개별 생성
.post((req, res) => {
res.send("전체 조회")
}) //채널 전체 조회
app
.route('/channels/:id')
.put((req, res) => {
res.send("개별 수정")
}) //채널 개별 수정
.delete((req, res) => {
res.send("개별 삭제")
}) //채널 개별 삭제
.get((req, res) => {
res.send("개별 조회")
}) //채널 개별 조회
app
.route('/channels')
.get((req, res) => {
res.send("전체 조회")
}) //채널 전체 조회
.post((req, res) => {
const { channelTitle } = req.body;
if (channelTitle) {
db.set(id++, req.body);
res.status(201).json({
message: `${channelTitle}채널을 응원합니다`
});
} else {
res.status(400).json({
message : "채널명이 없습니다"
})
}
}) //채널 개별 생성
app
.route('/channels/:id')
.put((req, res) => {
res.send("개별 수정")
}) //채널 개별 수정
.delete((req, res) => {
res.send("개별 삭제")
}) //채널 개별 삭제
.get((req, res) => {
let { id } = req.params;
id = parseInt(id);
channelInfo = db.get(id);
if (channelInfo) {
res.status(200).json(channelInfo);
} else {
res.status(404).json({
message : '채널 정보를 찾을 수 없습니다'
})
}
}) //채널 개별 조회
app
.route('/channels/:id')
.put((req, res) => {
let { id } = req.params;
id = parseInt(id);
let channelInfo = db.get(id);
let prevChannelTitle = channelInfo.channelTitle;
if (channelInfo) {
let newTitle = req.body.channelTitle;
channelInfo.channelTitle = newTitle;
db.set(id, channelInfo);
res.json({
message : `채널명이 정상적으로 수정되었습니다. 기존 ${prevChannelTitle} -> 수정 ${newTitle}`
})
} else {
res.status(404).json({
message : '채널 정보를 찾을 수 없습니다'
})
}
}) //채널 개별 수정
.delete((req, res) => {
let { id } = req.params;
id = parseInt(id);
const channelInfo = db.get(id);
if (channelInfo) {
db.delete(id);
res.status(200).json({
message:`${channelInfo.channelTitle}님 채널이 정상적으로 삭제되었습니다`
})
} else {
res.status(404).json({
message : '채널 정보를 찾을 수 없습니다'
})
}
}) //채널 개별 삭제
app
.route('/channels')
.get((req, res) => {
if (db.size) {
let channels = [];
db.forEach(function (value, key) {
channels.push(value);
})
res.status(200).json(channels);
} else {
res.status(404).json({
message:'조회할 채널이 없습니다'
})
}
}) //채널 전체 조회
const e = require('express');
const express = require('express');
const app = express();
app.listen(7777);
app.use(express.json());
let db = new Map();
let id = 1;
app
.route('/channels')
.get((req, res) => {
if (db.size) {
let channels = [];
db.forEach(function (value, key) {
channels.push(value);
})
res.status(200).json(channels);
} else {
res.status(404).json({
message:'조회할 채널이 없습니다'
})
}
}) //채널 전체 조회
.post((req, res) => {
const { channelTitle } = req.body;
if (channelTitle) {
db.set(id++, req.body);
res.status(201).json({
message: `${channelTitle}채널을 응원합니다`
});
} else {
res.status(400).json({
message : "채널명이 없습니다"
})
}
}) //채널 개별 생성
app
.route('/channels/:id')
.put((req, res) => {
let { id } = req.params;
id = parseInt(id);
let channelInfo = db.get(id);
let prevChannelTitle = channelInfo.channelTitle;
if (channelInfo) {
let newTitle = req.body.channelTitle;
channelInfo.channelTitle = newTitle;
db.set(id, channelInfo);
res.json({
message : `채널명이 정상적으로 수정되었습니다. 기존 ${prevChannelTitle} -> 수정 ${newTitle}`
})
} else {
res.status(404).json({
message : '채널 정보를 찾을 수 없습니다'
})
}
}) //채널 개별 수정
.delete((req, res) => {
let { id } = req.params;
id = parseInt(id);
const channelInfo = db.get(id);
if (channelInfo) {
db.delete(id);
res.status(200).json({
message:`${channelInfo.channelTitle}님 채널이 정상적으로 삭제되었습니다`
})
} else {
res.status(404).json({
message : '채널 정보를 찾을 수 없습니다'
})
}
}) //채널 개별 삭제
.get((req, res) => {
let { id } = req.params;
id = parseInt(id);
const channelInfo = db.get(id);
if (channelInfo) {
res.status(200).json(channelInfo);
} else {
res.status(404).json({
message : '채널 정보를 찾을 수 없습니다'
})
}
}) //채널 개별 조회