이전시간에 get과 post메소드를 사용해봤었는데 이번에는 Delete,put메소드를 사용해보겠습니다.
Delete(개별삭제)
3) 개별유튜버 "삭제" -> DELETE, /youtubers/:id
- req : params.id
- res : "channelTITLE님, 아쉽지만 다음에 또 뵙겠습니다."
url에서 id를 받아서 id를 이용해 db의 값을 삭제해주었습니다.
app.delete('/youtubers/:id',(req,res)=>{
const id = Number(req.params.id);
const channelTitle = db.get(id).channelTitle;
db.delete(id);
res.json({
message:`${channelTitle}님, 안녕`
})
})
결과를 확인해보면 Delete하였을때입니다.
Delete를 한 후 전체조회를 하였을 때 입니다.
예외처리
현재 위의 코드에서 없는 id를 삭제하고자 하면 에러가 발생합니다. 따라서 예외처리를 해줘야합니다.
app.delete('/youtubers/:id',(req,res)=>{
const id = Number(req.params.id);
let youtuber = db.get(id);
if(youtuber==undefined){
res.json({
message:`요청하신${id}번은 없는 유투버입니다.`
})
}else{
const channelTitle = youtuber.channelTitle;
db.delete(id);
res.json({
message:`${channelTitle}님, 안녕`
})
}
})
Delete(전체삭제)
4)전체 유튜버 "삭제" -> DELETE, /youtubers
- req : X
- res : "전체 유튜버가 삭제되었습니다."
전체삭제에서도 예외처리를 해줘야합니다. 만약 데이터가 없는데 삭제를 해주면 안됩니다. 즉 db에 값이 1개이상이면 전체삭제를 해주고 값이 없으면 삭제할 데이터가 없습니다 처럼 해줘야합니다.
app.delete('/youtubers',(req,res)=>{
let msg = ""
if(db.size>=1)
{
db.clear();
msg="전체 유튜버가 삭제되었습니다."
}
else{
msg = "삭제할 유튜버가 없습니다."
}
res.json({
message:`${msg}`
})
})
PUT(개별수정)
5) 개별 유튜버 "수정" -> PUT /youtubers/:id
- req : params.id, body -> channelTitle
- res : "(이전)channelTitle님, 채널명이 (새로운)channelTitle 변경되었습니다."
app.put('/youtubers/:id',(req,res)=>{
let id =Number(req.params.id);
let youtuber = db.get(id);
let oldTitle = youtuber.channelTitle
if(youtuber==undefined){
res.json({
message:`요청하신 ${id}번은 없는 유튜버입니다.`
})
}
else{
let newTitle = req.body.channelTitle;
youtuber.channelTitle=newTitle
db.set(id,youtuber)
res.json({
message:`${oldTitle}님, 채널명이 ${newTitle}로 변경되었습니다`
})
}
})
결과입니다. 먼저 put을 이용해서 youtuber 1번의 타이틀을 body로 실어서 보내줍니다.
그 다음 전체조회를 해보면
HTTP 상태코드
- 조회/수정/삭제 성공 : 200
- 등록 성공 : 201
- 찾는 페이지 없음(URL에 맞는 API 없음) : 404
- 서버가 죽었을 때 (서버가 크리티컬한 오류를 맞았을 때) : 500
'백엔드 > node.js(express)' 카테고리의 다른 글
토이프로젝트 유튜브1(회원API설계), router (0) | 2023.12.18 |
---|---|
핸들러란, 상태코드,예외처리 (1) | 2023.12.15 |
Expess Post(Postman, app.use()함수) (0) | 2023.12.11 |
Express 구조 이해하기(express,generator) (0) | 2023.12.11 |
req.params연습(쿼리스트링, 객체, Map객체) (1) | 2023.12.07 |