-
[데브코스] 26일차 TILTIL/교육 내용 정리 2024. 5. 4. 22:32
핸들러, if(객체) : if 긍정문, route
핸들러란? HTTP request가 날아오면 자동으로 호출되는 메소드 노드 : 콜백함수로, app.HTTPmethod(path, 핸들러) 요청에 의해 호출되는 메소드
// youtubver-demo.js app.delete('/youtubers/:id', (req, res) =>{ let {id} = req.params id = parseInt(id) var youtuber =db.get(id) if(youtuber){ const channelTitle = youtuber.channelTitle db.delete(id) res.json({ message :`${channelTitle}님, 아쉽지만 우리 인연은 여기까지 인가요..` }) }else{ message : `요청하신 ${id}번은 없는 유튜버입니다.` } })
- 거꾸로 해서 이해하기 쉽게 리팩토링
json array, find(), “찐”예외처리
// exception-demo.js // 과일 전체조회 const express = require('express') const app = express() app.listen(1234) const fruits = [ { id : 1, name : 'apple'}, { id : 2, name : 'orange'}, { id : 3, name : 'strawberry'}, { id : 4, name : 'blueberry'} ] // 과일 전체 조회 app.get('/fruits', (req,res) =>{ res.json(fruits) })
// exception-demo.js // 과일 개별조회 app.get('/fruits/:id', (req, res)=>{ let id = req.params.id let fruit = fruits[id] res.json(fruit) })
- id : 1을 원했지만
- 결과 값는 id : 2가 나옴
- arr는 인덱스로 받음
- 어떻게 해야될까 ❓
- let fruit = fruits[id-1]
둘중 하나.// fruits 배열 안에 있는 객체 중, // id 값이 params.id랑 같은 객체를 찾겠다 var findFruit = fruits.find(f => f.id == id)
- var findFruit = "" fruits.forEach(function(fruit){ if(fruit.id == id){ findFruit = fruit } })
- id -1 해주거나
- 지금 예외가 터져야되는 데, 200 OK 가 나옴.
// exception-demo.js if(findFruit) // finFruits가 있으면 res.json(findFruit) else // 예외를 터트린다. = http status code 성공x 실패 !라고 알려준다. res.status(404).send( "전달주신 id로 저장된 과일이 없습니다." )
예외가 잘 터트려짐.
== vs === 자료형과 상관있
// equal-demo.js // == 과 ===의 차이 if(1 == "1"){ // 자료형 상관 없이 console.log("== 1과 '1'은 같아") }else{ console.log("1과 '1'같지 않다.") } if(1 === "1"){ // 자료형 상관 있 console.log("1과 '1'은 같아") }else{ console.log("=== 1과 '1'같지 않다.") }
Youtuber demo 예외 고도화 : map은 undefined가 아닙니다.
// youtuber-demo.js app.get('/youtubers', (req, res)=>{ var youtubers = {} if(db){ db.forEach(function(value, key){ youtubers[key] = value }); res.json(youtubers) }else{ res.status(404).json({ message : "조회할 유튜버가 없습니다." }) } })
- map(0) {} 도 있는 존재 하기 때문에 404가 아니라 200을 status로 보여주는 거임.
- 그러면 어떻게 해야될까 ❓
- if(db.size !==0)으로 수정해준다.
Youtuber demo 예외 고도화 : post
post body 값에 원래는 “김유튜버”라고 값을 넣어줬는 데, 만약에 body값을 안보내주면?
{ "channelTitle" : "김유튜버", "sub" : 0, "videoNum" : 0 }
???? 정상 작동 한다고 해버림. 예외처리
- 어떻게 하면 좋을까 ❓
// youtuber-demo.js app.use(express.json()) // http의 모듈인 미들웨어 : json 설정 app.post('/youtubers', (req, res)=>{ **const channelTitle = req.body.channelTitle** **if(channelTitle){** // 등록이란 Map(db)에 저장(set)해줘야된다. db.set(id++, req.body) // 지금은 저장이 같은 번호로 됨. -> id++해줌으로 3저장 3++ 4저장 4++,.. res.json({ message : `${db.get(id-1).channelTitle}님, 유튜버 생활을 응원합니다.` }) }else{ **res.status(400).json({** message : "요청 값을 제대로 보내주세요." }) } })
- req body에 채널타이틀 있어?
200 : 조회 성공 201 : 등록 성공 고도화
if(channelTitle){ // 등록이란 Map(db)에 저장(set)해줘야된다. db.set(id++, req.body) // 지금은 저장이 같은 번호로 됨. -> id++해줌으로 3저장 3++ 4저장 4++,.. **res.status(201).json({** message : `${db.get(id-1).channelTitle}님, 유튜버 생활을 응원합니다.` }) }else{ res.status(400).json({ message : "요청 값을 제대로 보내주세요." }) } })
미니 프로젝트 시작
<aside> 💡 진짜 유튜브 운영하는 것처럼 해볼까요?
</aside>
- [ ] 회원 가입
- 로그인
- 회원 가입
- 회원 정보 조회
- 회원 탈퇴
- 회원은 계정 당 채널 100개를 가질 수 있다.
- 채널 생성
- 채널 수정
- 채널 삭제
로그인 페이지
회원 가입 페이지
마이 페이
회원 API 설계
- [ ] 회원 가입
- 로그인 POST(post는 body가 있다..) /login
- req : (BODY) id, pw
- res : $(name)님 환영합니다. 👉 메인 페이지 (고도화)
- 회원 가입 POST /join
- req : (body)id, pw, 이름
- res : $(name)님 환영합니다. 👉 로그인 페이지(고도화)
- 회원 정보 개별 조회 GET /users/:id
- req : URL (user id)
- res : userid, name
- 회원 개별 탈퇴 DELETE /users/:id - req : URL (id)
- res : $(name)님 다음에 또 뵙겠습니다. . or 메인 페이지 ****
- 회원은 계정 당 채널 100개를 가질 수 있다.
- 채널 생성
- 채널 수정
- 채널 삭제
회원 API 코드 툴
// user-demo.js // express module setting const express = require('express') const app = express() app.listen(7777) // 로그인 app.post('/login', (req, res)=>{ }) // 회원가입 app.post('/join', (req, res)=>{ }) // 회원 개별 조회 app.post('/users/:id', (req, res)=>{ }) // 회원 개별 탈퇴 app.post('/users/:id', (req, res)=>{ })
'TIL > 교육 내용 정리' 카테고리의 다른 글
[데브코스] 28일차 TIL (0) 2024.05.05 [데브코스] 27일차 TIL (0) 2024.05.04 [데브코스] 25일차 TIL (0) 2024.05.04 [데브코스] 24일차 TIL (0) 2024.05.04 [데브코스] 23일차 TIL (0) 2024.04.30