진짜 유튜브 운영하는 것처럼 해볼까?
API 설계
-> 화면을 간단하게라도 그려보자.
로그인 페이지
(1) 화면 완성 API X
(2) 로그인 버튼 클릭 => id, pwd 로그인 시켜줄 API
회원가입 페이지
(1) 화면 완성 API X
(2) 회원가입 버튼 클릭 시, id, pwd, 이름 => 회원 가입 시켜줄 API
마이페이지
(1) 화면 생성 => 회원 정보 조회 API
(2) 회원 탈퇴 클릭 시, 회원 탈퇴 시켜줄 API
회원
1) 로그인 POST /login (GET/POST 헷갈릴때는 body 유무 확인)
- req : body(id, pwd)
- res : `$(name)님 환영합니다` // 👉🏻 메인 페이지
2) 회원가입 : POST /join
- req : body(id, pwd, name)
- res : `${name}님 환영합니다` // 👉🏻 로그인 페이지
3) 회원 개별 조회 : GET /users/:id
- req : URL (id)
- res : id, name
4) 회원 개별 탈퇴 : DELETE /users/:id
- req : URL (id)
- res : `${name}님 다음에 또 뵙겠습니다.` or 메인 페이지
회원은 계정 1개당 채널 100개를 가질 수 있다.
채널
- 채널 생성
- 채널 수정
- 채널 삭제
1차 코드
// express 모듈 셋팅
const express = require('express');
const app = express();
app.listen(7777);
app.use(express.json()) //http 외 모듈 'json'
let db = new Map();
var id = 1; // 하나의 객체를 유니크하게 쿠별하기 위함. PK
//로그인
app.post('/login', (req, res) => {
})
//회원가입
app.post('/join', (req, res) => {
console.log(req.body)
if(req.body != {}){
db.set(id++, req.body)
res.status(201).json({
message : `${db.get(id-1).name}님 환영합니다.`
})
}
else {
res.status(400).json({
message : `입력 값을 다시 확인해주세요.`
})
}
})
//회원 개별 조회
app.get('/users/:id', (req, res) => {
let {id} = req.params;
id = parseInt(id);
const user = db.get(id);
if(user == undefined){
res.status(404).json({
message : "회원 정보가 없습나다."
})
} else {
res.status(200).json({
userId : user.userId,
name : user.name
})
}
})
//회원 개별 탈퇴
app.delete('/users/:id', (req, res) => {
let {id} = req.params;
id = parseInt(id);
const user = db.get(id);
if(user == undefined){
res.status(404).json({
message : "회원 정보가 없습나다."
})
} else {
db.delete(id)
res.status(200).json({
message : `${user.name}님 다음에 또 뵙겠습니다.`
})
}
})
delete와 get에서 url이 중복됨. -> routing을 사용해보자
app
.route('/users/:id')
.get((req, res) => {
let {id} = req.params;
id = parseInt(id);
const user = db.get(id);
if(user == undefined){
res.status(404).json({
message : "회원 정보가 없습나다."
})
} else {
res.status(200).json({
userId : user.userId,
name : user.name
})
}
})
.delete((req, res) => {
let {id} = req.params;
id = parseInt(id);
const user = db.get(id);
if(user == undefined){
res.status(404).json({
message : "회원 정보가 없습나다."
})
} else {
db.delete(id)
res.status(200).json({
message : `${user.name}님 다음에 또 뵙겠습니다.`
})
}
})



'Devcourse' 카테고리의 다른 글
| <프로그래머스 데브코스 풀스택> 2026-01-29 TIL 미니프로젝트(3) 라우팅으로 연결, 회원마다 채널 가지게 ERD (0) | 2026.01.29 |
|---|---|
| <프로그래머스 데브코스 풀스택> 2026-01-25 TIL 미니프로젝트(2) - 로그인, 빈 객체 확인하는 방법, 채널 API (0) | 2026.01.29 |
| <프로그래머스 데브코스 풀스택> 2026-01-27 TIL(2) 핸들러, 예외처리, == vs === (0) | 2026.01.28 |
| [프로그래머스 데브코스 풀스택] 2026-01-27 TIL foreach문, map 함수, 리팩토링, HTTP 상태 코드 (0) | 2026.01.27 |
| <프로그래머스 데브코스 풀스택> 2026-01-26 TIL (0) | 2026.01.25 |