POST
브라우저에서는 POST 테스트가 불가능하다.
따라서 POST를 테스트 하기 위해서는 Postman 이라는 프로그램을 사용한다.
POST는 body 영역을 통해 데이터를 전달해야한다.
Postman으로 body에 데이터를 싣는 방법은 다음과 같다.
Body의 raw를 클릭하고 형식을 json으로 설정한다. 그리고 원하는 데이터를 json 형식으로 입력해준다.
백엔드 post의 예시코드이다.
app.use(express.json)
app.post('/test', function(req, res){
// body에 숨겨져서 들어온 데이터를 화면에 뿌려주기
console.log(req.body);
console.log(req.body.message)
res.send(req.body.message)
})
json 미들웨어를 사용하면 req로 날아오는 body 값을 json으로 읽어볼 수 있다.
youtuber-demo 업그레이드
이번에는 youtuber-demo 에 유튜버를 등록하는 기능을 추가해보자.
app.use(express.json()) //http 외 모듈인 미들웨어: json 설정
app.post('/youtuber', (req, res) => {
console.log(req.body)
//db 에 저장해야함
db.set(4, req.body)
res.json({
message : `${db.get(4).channelTitle} 님, 유튜버 생활을 응원합니다!`
})
})
post 요청을 받으면 이를 데이터베이스에 저장하고, 템플릿 문자열을 사용해 메시지를 응답해주는 코드이다.
Postman에서 요청은 이런식으로 보내보기로 한다.
youtuber-demo 고도화
id 값이 하드코딩되어있는데 이것을 변수로 교체해 보도록 하겠다.
let db = new Map();
let id = 1;
db.set(id++, youtuber1)
db.set(id++, youtuber2)
db.set(id++, youtuber3)
우선 초기값 저장을 바꿔주어야 한다. id라는 변수를 선언하고 그 변수를 키값으로 db에 저장한 후 id 값을 하나씩 증가시켜준다.
app.post('/youtuber', (req, res) => {
console.log(req.body)
console.log(id)
//db 에 저장해야함
db.set(id++, req.body)
res.json({
message : `${db.get(id-1).channelTitle} 님, 유튜버 생활을 응원합니다!`
})
})
마찬가지로 post 부분도 변수로 교체해 주었다. 이때 강사님이 let id 는 블록 스코프라서 var로 변경해서 사용해야 한다고 하셨는데 let id 는 상위 블록에 선언된 변수기 때문에 안쪽 블록에서도 사용이 가능하고 우리가 의도한 대로 코드가 동작하는 것을 알 수 있다. 아마 강의 내용의 오류인것 같다.
후기
HTTP의 새로운 메소드인 POST에 대해서 알아보았다. POST는 웹브라우저에서 테스트가 안되고 postman 이라는 프로그램을 사용해야한다. 데이터를 등록하는 경우에 많이 사용되는 메소드이므로 앞으로도 자주 활용할 것이다.
키워드: 프로그래머스 데브코스, 국비지원교육, 코딩부트캠프
'프로그래머스 풀스택 데브코스 > 데브코스 TIL' 카테고리의 다른 글
웹 풀사이클 데브코스 TIL 19일차 (0) | 2023.12.13 |
---|---|
웹 풀사이클 데브코스 TIL 18일차 (0) | 2023.12.12 |
웹 풀사이클 데브코스 TIL 16일차 (0) | 2023.12.08 |
웹 풀사이클 데브코스 TIL 15일차 (2) | 2023.12.07 |
웹 풀사이클 데브코스 TIL 14일차 (1) | 2023.12.06 |