<프로그래머스 데브코스 풀스택>2026-01-28 TIL 미니프로젝트

진짜 유튜브 운영하는 것처럼 해볼까?

 

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}님 다음에 또 뵙겠습니다.`
            })
        }
    })