http 메소드 post
ex. 회원가입
post는 url이 아니고 숨겨서 body에 담아서 전송하게 된다.
웹 브라우저에서 확인할 수 없고, Postman에서 테스트를 돌려서 확인할 수 있다.
pc에 설치해서 사용하는 것을 권장한다. 웹 버전에서는 불가능한 기능이 많기 때문!
Postman
여러 메서드(GET, POST, PUT, PATCH 등)를 테스트할 수 있고, 탭도 여러개 키고, 값도 html 형식으로 예쁘게 보여준다.
기존 웹 브라우저는 pretty print를 적용해야 요모양인데...!!
body 부분에 숨겨져서 전송되는 데이터 post를 확인할 수 있다.
데이터 소통 방법
URL, Query String, Body
body 데이터 사용하기
`req.body.키값`
json 형태로 사용하기 (프론트, 백 둘다)
app.post("/test", (req, res) => {
//body에 숨겨져서 들어온 데이터를 화면에 뿌려준다.
res.json(req.body.message);
});
유튜브 데모 업그레이드
post를 활용해서 유튜버를 추가할 수 있도록
<API 설계 URL, method>
- 개별 유튜버 조회 GET `/youtuber/:id` : id로 map에서 객체를 찾아서, 그 객체의 정보를 뿌려줌
- req : params.id ← map 에 저장된 key 값을 전달
- res : map에서 id로 객체를 조회해서 전달
- 유튜버 등록 POST `/youtuber`
- req : body ← channelTitle, sub = 0, videoNum = 0 신규 유튜버 정보 전달
- DB에 저장 put
- res : "channelTitle님, 유튜버 등록이 완료되었습니다."
key값 고도화
map에 순서대로 삽입되게 하려면, key 값을 idx라는 변수로 할당한뒤, 증가연산자로 순차적으로 출력하게 한다. 후위보다 전위 연산자를 사용하였다.
let db = new Map();
let idx = 1;
db.set(idx, youtuber1);
db.set(++idx, youtuber2);
db.set(++idx, youtuber3);
app.use(express.json()); //http 외 모듈인 '미들웨어':json 설정
app.post("/youtuber", (req, res) => {
//Map(db)에 저장(put)
db.set(++idx, req.body);
res.json({
message: `${req.body.channelTitle}님, 유튜버 등록이 완료되었습니다!`, //db.get(idx).channelTitle
});
});
전체 조회
<API 설계 URL, method>
- 전체 유튜버 조회 GET `/youtubers`
- req : X
- res : map 전체조회
- 개별 유튜버 조회 GET `/youtubers/:id` : id로 map에서 객체를 찾아서, 그 객체의 정보를 뿌려줌
- req : params.id ← map 에 저장된 key 값을 전달
- res : map에서 id로 객체를 조회해서 전달
- 유튜버 등록 POST `/youtubers`
- req : body ← channelTitle, sub = 0, videoNum = 0 신규 유튜버 정보 전달
- DB에 저장 put
- res : "channelTitle님, 유튜버 등록이 완료되었습니다."
app.get("/youtubers", (req, res) => {
res.json({
message: "test",
});
});
☑️ 배운 점
postman 사용법
body로 json 값 사용하기
POST 사용법. 실제 DB에 저장하는 과정도 하고 싶다.