[프로그래머스 데브코스 풀스택] 2026-01-22 TIL

저번 게시글에서 이어서 ..

 

1)

app.get('/products/:n', (req, res) => {
    //: => 나한테 URL로 매개변수를 전달 해줄 거구나 
    // products/__ 빈칸에 오는 값을 n이라는 변수에 담아줘
    //console.log(req.params) ==> {n: '3'}
    //console.log(req.params.n) ==> {3}
    res.json({
        num : req.params.n
    })
})

 

2) 

app.get('/test/1', function(req, res)){
    res.json({
        num : 1
    })
}

 

차이 : 1)는 1이 문자열, 2)는 int로 받아짐.

Javascript에서는 형태가 중요하지 않지만, 다른 언어에서는 문자열을 Int로 변환시키는 과정을 해야함!

 

 

parseInt( ) 를 써서 형변환 해주자!

app.get('/products/:n', (req, res) => {
    //: => 나한테 URL로 매개변수를 전달 해줄 거구나 
    // products/__ 빈칸에 오는 값을 n이라는 변수에 담아줘
    //console.log(req.params) ==> {n: '3'}
    //console.log(req.params.n) ==> {3}
    let number = parseInt(req.params.n) - 10
    console.log(number)

    if((req.params.n-5) > 10){
        console.log("url로 전달받은 숫자가 10보다 크네요.")
    }

    res.json({
        num : number
    })

})

👉🏻 연산도 가능해짐!

 

🤔 그러면 이걸 어디에 쓰지? 

파람

유튜브를 예로 들어보자

채널 주소 : https://www.youtube.com/@HAEJOOOOO / https://www.youtube.com/@ChimChakMan_Official ...
아이디로 구별을 하고 있구나!

영상 클릭 주소 : https://www.youtube.com/watch?v=Z2-iuNhVfZg

Z2-iuNhVfZg <- 유니크한 영상만의 코드

app.get('/:nickname', function(req, res) {
    const param = req.params

    res.json({
        channel : param.nickname
    })
})

쿼리스트링

채널 주소 : https://www.youtube.com/@yes24_official

영상 클릭 주소 :https://www.youtube.com/watch?v=x-ehWQmJZRA  / https://www.youtube.com/watch?v=1gwBX1m_6oA&list=RD1gwBX1m_6oA&start_radio=1  ...

여러 값이 들어올때 watch?v= 가 들어오는 군!!! 쿼리스트링으로 받아와보자

 

app.get('/watch', function(req, res) {
    const q = req.query;
    console.log(q);
    res.json({
        
    })
})

 

http://localhost:3000/watch?v=1gwBX1m_6oA&list=RD1gwBX1m_6oA&start_radio=1 입력 시 

왼: 출력 / 오: console

 

app.get('/watch', function(req, res) {
    const q = req.query;
    console.log(q);
    res.json(q);
})

json에 출력 가능

q는 json형태니까 바로 넣어줌!

 

app.get('/watch', function(req, res) {
    const q = req.query;
    console.log(q.v)
    console.log(q.list)
    console.log(q.start_radio)
    res.json({
        video : q.v
    });
})

 

이름 씌어서 보여주는 것도 가능. 

 

객체의 비구조화 

app.get('/watch', function(req, res) {
    const {v, t} = req.query;
    console.log(v)
    console.log(t)
    res.json({
        video : v,
    });
})

변수명(v, t) 똑같이 써야함.

 

배열의 비구조화

const array = [1,2,3,4,5]

const [num2, num3, num5] = array 

console.log(num2)
console.log(num3)
console.log(num5)

>> 1 2 3

배열의 순서에 대라 배정됨

 

const [ ,num2, num3, ,num5] = array

이렇게 수정해주면?

>> 235

 

👉🏻 이걸 활용하면 간단한 코드로 정리할 수 있겠구나!

 

API에 따른 여러 쿼리를 넣어보자.

import express from 'express'

const app = express()

app.listen(3001, () => {
  console.log('Server is running on http://localhost:3001')
})

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천개"
}

app.get('/:nickname', function(req, res) {
    const {nickname} = req.params
    if(nickname == "@yes24_official"){
        res.json(youtuber1)
    }
    else if(nickname == "@HAEJOOOOO"){
        res.json(youtuber2)
    }
    else if(nickname == "@DingoMusic"){
        res.json(youtuber3)
    }
    //개발자가 예상하지 못한 에러 = 예외가 발생했다 !
    else{
        res.json({
            "message" : "죄송합니다. 모르는 유튜버입니다."
        })
    }
})

 

 

네이밍 케이스
: 어느 것을 써도 무방하나, 통일하자. 

1️⃣ Kebab-case cf.snake_case

폴더(ex. demo-api.js)

파일명(ex. object-api-demo.js) 

=> 특징 :

- 알파벳 소문자

- 둑 개 이상의 단어를 합쳐서 쓸 땐, 첫 번째 단어와 두 번째 단어 사이에 '하이픈'

 

2️⃣ camelCase

변수, 함수 (ex. channelTitle, videoNum)

=> 특징 : 두 개이상의 단어를 합쳐서 쓸 땐, 두 번째 단어의 첫글자를 "대문자"로

 

3️⃣ PascalCase : 클래스명

 

Map

{ 키 : 벨류 } 로 이루어져있는 자료구조

json은 map형태로 이루어져있음

 

Map을 사용해서 데이터베이스를 만들어보자. 

let db = new Map()

db.set(1, "NoteBook") // 키로 벨류를 찾을 수 있는 한 쌍을 저장 
db.set(2, "Cup")
db.set(3, "Chair")

console.log(db)
console.log(db.get(1))
console.log(db.get(2))
console.log(db.get(3))

 

express + map

import express from 'express'
const app = express()
app.listen(3002, () => {
  console.log('Server is running on http://localhost:3002')
})



app.get('/:id', (req,res) => {
    let {id} = req.params
    id = parseInt(id) // "숫자" => 숫자
    
    if(db.get(id) == undefined){
        res.json({
            message : "없는 상품입니다."
        })
    }
    else{     
        res.json({
            id : id,
            productName : db.get(id)
        })  
    }
})

let db = new Map()

db.set(1, "NoteBook") // 키로 벨류를 찾을 수 있는 한 쌍을 저장 
db.set(2, "Cup")
db.set(3, "Chair")

console.log(db)
console.log(db.get(1))
console.log(db.get(2))
console.log(db.get(3))

❗️ else를 안넣는다면? 

    if(db.get(id) == undefined){
        res.json({
            message : "없는 상품입니다."
        })
    }
    
    res.json({
        id : id,
        productName : db.get(id)
    })

if 걸리면, if 밖의 res.json을 또 한번 받아서 오류가 뜸!!

한 번만 전송할 수 있다는 것. 

 


어제 너무 피곤해서 처음으로 강의를 하루 미뤘다.. 

그런데 공부하다보니 어제도 늦게 자버리고, 오늘 코어 타임때도 스터디 준비를 하느랴 지금도 밤늦게 끝냈다. 

저번주부터 계속 바쁜 스케줄이 반복되고있고,, 이제는 adsp공부도 시작해야될 것같아서 걱정이 많이크다.

 

그래도 걱정과 달리 

오늘 코테 스터디에서 코드리뷰 당당하게 잘해낸 거같고

팀장님 덕분에 정말 알차게 시간을 보내고 있는 것같아서 하루하루 채워나가며 살아가는 느낌이 든다.

 

한 게 없어서 무기력한 것보다는 훨~~씬 잘된일 아닌가??