PROJECT/[ 유튜브 ]

로그인 API (YOUTUBE-DEMO API 설계 구현!)

Lim임 2025. 9. 23. 17:21

중복체크 안하나?

 

페이지마다 필요한 api ㅡ를 적어두고 필요한 req,res를 적어보아요

get post 의 차이가 body 가 있고없고 <<그랬나? 우하하하

 

 

직접 제작해보자 !!

 

왜 get이랑 delete는 tab 되어있을까? => 오른쪽 기준

 

 

1) 로그인 기능

req.body 값을 받아서 입력

 

// 아이디 비밀번호가 없음

if(아이디나 비밀번호가 비어있음){

  • status 400
  • "아이디와 비밀번호를 입력해주세요!"

}

// 아이디나 비밀번호가 DB와 다름

else if(아이디 비밀번호가 DB에 없음){

  • status 401
    • 비록 HTTP 표준에서는 "미승인(unauthorized)"를 명확히 하고 있지만, 의미상 이 응답은 "비인증(unauthenticated)"을 의미합니다. 클라이언트는 요청한 응답을 받기 위해서는 반드시 스스로를 인증해야 합니다.
  • "아이디와 비밀번호를 확인해주세요"

}

// 로그인

else { 

  • 로그인 성공 => 메인페이지
  • "{유저}님 어서오세요!"

}

 

2) 회원가입

req.body 값을 받아서 입력

 

// 아이디 비밀번호 이름이 없음

if( id, password, name  하나라도 없다면 ){

  • status 400
    • 400 Bad Request: 요청 형식 자체가 잘못됐거나 필수 파라미터 누락일 때(예: email이 아예 없음)
  • "빈칸을 모두 작성해주세요!"
  • // 없는 요소 출력

}

// 아이디 중복 체크

else if(id 중복체크){

  • status 409 
  • "존재하는 아이디입니다!"
    • 409 Conflict (자원 충돌):
    • 의미: 요청된 리소스가 이미 존재하여 클라이언트의 요청이 현재 서버의 상태와 충돌할 때 사용합니다.
    • 사용 이유: 회원가입 시 입력한 아이디가 이미 서버에 존재하기 때문에, '이미 존재하는 아이디'는 클라이언트가 생성하려는 리소스와 충돌을 일으킵니다. 이 경우 409 Conflict를 반환하여 중복을 명확히 알리는 것이 적절합니다. 

}

// 비밀번호 확인

// 길이제한

    ㄴ 규칙 배열 생성

// 회원가입

else{

  • // 비밀번호 해시 처리 (비싼 작업이라 검증 통과 후에만 실행)
  • db.set( key, { newUser })
  • "회원가입이 완료되었습니다"

}

 

=> if(모두포함){

 

}else{

}

 

3) 회원 데이터 조회 (개인)

req.params 로 값을 받아서 이용

 

// 로그인 상태가 아님!!

세션,,

403 Forbidden

- 서버가 요청을 이해했지만 승인을 거부함

- 주로 인증 자격 증명은 있지만, 접근 권한이 불충분한 경우

- 어드민 등급이 아닌 사용자가 로그인은 했지만, 어드민 등급의 리소스에 접근하는 경우이다.

// 회원 정보가 없음

if( id 랑 일치하지않아!! ){

  • status 404
  • "이 아이디는 존재하지 않습니다"

}

// 회원정보 조회

else{

  • db.get(id)
  • "{회원정보들}"

}

 

+ url에 들어오는 id는 개인적으로 string이어야한다고 생각했는데,,,그래서 오래걸렸는데

간단히 1로 하셨다 ㅜㅜ너무 슬퍼요 나중에 고도화해주시겠죠?

4) 회원 탈퇴 (개인)

// 회원 정보가 없음

if( id 랑 일치하지않아!! ){

  • status 404
  • "이 아이디는 존재하지 않습니다"

}

// 회원정보 조회

else{

  • db.delete(id)
  • "삭제되었습니다 바이바이"

}

 

 

현타,,,,,,,,

너무 안돼서 ,,,,,지금 새벽 2시반인데아직도안대서,,,,,,,,

app.use(express.json())

이거 미들웨어,,안넣ㄴ어서,,,,,,,,,,,,,,,,하,,,,,,,,,못쓴거임진짜,,,,,,,,깩