<프로그래머스 데브코스 풀스택> 2026-01-26 TIL

HTTP method

- 생성 : POST

 ex. 회원가입 = 나 좀 등록해줘 = id, password, name, email, contact로

<< Get과 달리 바디에 숨겨서 보내야함 
- 조회 : GET

ex. URL로 데이터 보냈는데? 

 

=> POST은 브라우저에서 확인할 수 없음. 

 

Postman

을 사용해 Post를 테스트해보자.

app.post('/test', function(req, res){
  res.send('Hello POST!!!')
})

 

1️⃣ postman이 {"message" : "Bye Post!!!"} 전송함 

2️⃣ 서버에서 받아 들이는 형태

req = {
  headers: {
    "content-type": "application/json",
    ...
  },
  body: "{"message":"hello"}"   ← 그냥 문자열 덩어리
}

 

app.use(express.json())
app.post('/test', function(req, res){
  //body에 숨겨져서 들어온 데이터를 화면에 뿌려줘보자.

  console.log(req.body.message)

  res.send(req.body.message)
})

 

3️⃣ app.ues(express.json()) 실행

 : Body읽어서 JSON 파싱해줌 -> req.body.~ 사용 가능해짐 

 req.body = { message: 'hello'}

 

 

4️⃣ res.send(req.body.message)
: 서버가 응답으로 body값을 다시 꺼내서 보냄 -> Postman의 하단 바디에 보여짐. 

 

활용해서 유튜버-데모 업그레이드 해보자.

//express 모듈 셋팅
import express from 'express'
const app = express()
app.listen(3004, () => {
    console.log("Server is running on http://localhost:3004")
})

// 데이터 셋팅
let youtuber1 = {
    channelTitle : "YES24",
    sub : "20.1만명",
    videoNum : "1.2천개"
}

let youtuber2 = {
    channelTitle : "해쭈 [HAEJOO]",
    sub : "82.7만명",
    videoNum : "507개"
}

let youtuber3 = {
    channelTitle : "딩고 뮤직 / dingo music",
    sub : "547만명",
    videoNum : "3.2천개"
}


let db = new Map()

db.set(1, youtuber1) // 키로 벨류를 찾을 수 있는 한 쌍을 저장 
db.set(2, youtuber2)
db.set(3, youtuber3)


// REST API 설계
app.get('/youtuber/:id', function(req, res){
    let {id} = req.params
    id = parseInt(id)
    
    const youtuber = db.get(id)
    if(youtuber == undefined){
        res.json({
            message : "유튜버 정보를 찾을 수 없습니다."
        })
    } else {    
        res.json(youtuber)            
    }
})

app.get('/', function(reqs, res){
    res.send('Hello World')
})

기존 코드

1. 기존 유튜버 3명만 정보를 반환할 수 있었고, 새로운 유류버를 등록할 수 없음

2. 1,2,3 유튜버에 대한 api

 

=> 💡 POST를 활용해서 유튜버를 추가해보자. 

 

<API 설계(URL, method)>

0) 전체 유튜버 "조회" GET /youtubers

- req : X

- res : map을 전체 조회 

 

1) 개별 유튜버 "조회" GET /youtubers/:id : id로 map에서 객체를 찾아서, 그 객체의 정보를 뿌려줌

- req : params.id <= map 에 저장된 Key값을 전달

- res : map에서 id로 객체를 조회해서 전달

 

2) 유튜버 등록 => POST /youtubers

- req : body <= channelTitle, sub = 0, videoNum =0 신규 유튜버 정보를 전달, db에 저장까지 해줌

- req : "channelTitle님, 유튜버 생활을 응원합니다!"

//express 모듈 셋팅
import express from 'express'
const app = express()
app.listen(3004, () => {
    console.log("Server is running on http://localhost:3004")
})

// 데이터 셋팅
let youtuber1 = {
    channelTitle : "YES24",
    sub : "20.1만명",
    videoNum : "1.2천개"
}

let youtuber2 = {
    channelTitle : "해쭈 [HAEJOO]",
    sub : "82.7만명",
    videoNum : "507개"
}

let youtuber3 = {
    channelTitle : "딩고 뮤직 / dingo music",
    sub : "547만명",
    videoNum : "3.2천개"
}


let db = new Map()
var id = 1

db.set(id, youtuber1) // 키로 벨류를 찾을 수 있는 한 쌍을 저장 
db.set(id++, youtuber2)
db.set(id++, youtuber3)


// REST API 설계
app.get('/youtuber/:id', function(req, res){
    let {id} = req.params
    id = parseInt(id)
    
    const youtuber = db.get(id)
    if(youtuber == undefined){
        res.json({
            message : "유튜버 정보를 찾을 수 없습니다."
        })
    } else {    
        res.json(youtuber)            
    }
})

app.use(express.json()) // http 외 모듈인 '미들웨어': json 설정
app.post('/youtuber', (req, res) => {
    console.log(req.body)
    //등록 : Map(db)에 저장(put) 해줘야됨
    db.set(id++, req.body)

    res.json({
        message : `${db.get(id-1).channelTitle}님, 유튜버 생활을 응원합니다!`
    })

})

app.get('/', function(reqs, res){
    res.send('Hello World')
})

1명씩 등록 가능하고,

get에서 확인 가능함!