Express에서 Params 다루기

Younha Lee·2026년 1월 21일

TIL

목록 보기
15/61

Params 복습

const express = require('express');
const app = express();

app.get('/:nickname', function (req, res) {
    res.json({
        channel : req.params.nickname
    })
});

app.listen(3000);


express 에서는 파라미터를 requestparams 에서 추출해낼 수 있어요.

형변환 in JS

js에서는 string을 number로 변경하려면 parseInt(), Number(), 혹은 + 를 사용할 수 있어요.

let strNum = '123';

console.log(typeof strNum);

// 1. Number()
console.log(typeof Number(strNum));

// 2. parseInt()
console.log(typeof parseInt(strNum));

Query String in Express

Express에서 쿼리 스트링 값을 받아올 때 다음과 같이 해요.

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

Params를 받아올 때처럼 쿼리 또한 request.query 를 통해 받아올 수 있어요.

app.get('/watch', function (req, res) {
    const query = req.query;
    console.log(query);
    res.json({
        '영상 코드' : query.v,
        '시작 지점' : query.t,
    })
});


이 예제의 query.v처럼 쿼리의 속성에 직접 접근할 수도 있어요.

let youtuber1 = {
    channelTitle: "십오야",
    sub: "593만명",
    videoNum: "993개"
}

let youtuber2 = {
    channelTitle: "침착맨",
    sub: "223만명",
    videoNum: "6600개"
}

let youtuber3 = {
    channelTitle: "레니아워",
    sub: "20만명",
    videoNum: "123개"
}

app.get('/watch', function (req, res) {
    const { nickname } = req.query;

    if (nickname == "십오야") {
        res.json(youtuber1);
    }
    if (nickname == "침착맨") {
        res.json(youtuber2);
    }
    if (nickname == "레니아워") {
        res.json(youtuber3);
    }
  	res.json({
      message: "알 수 없는 유튜버입니다."
    });
});

익숙해졌다면 다음과 같이
객체를 생성한 것을 res.json 으로 return하는
실습도 해볼 수 있어요.

import express from 'express';
const app = express();

app.listen(3000);

let db = new Map();

db.set(1, 'John'); // key로 value를 찾을 수 있는 한 쌍
db.set(2, 'Peter');
db.set(3, 'Amy');

app.get('/:id', function (req, res) {
    const { id } = req.params;
  // 예외처리
    if (!db.has(+id)) {
        return res.status(404).json({ message: 'Not found' });
    }
    res.json({
        id,
        name: db.get(+id),
    });
})
})


다음과 같이 params로 들어온 id를 +로 숫자로 변경하여 db에서 데이터를 조회, 돌려줬어요.

구조 분해 할당(Destructuring, 비구조화)

JS에서 사용하면 편리한 기능을 설명하고 넘어갈게요

구조 분해 할당이란 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 Javascript의 표현식

구조 분해 할당을 통해 객체나 배열의 요소에 좀 더 쉽게 접근할 수 있어요.
배열의 경우 index를 통한 접근이 아닌 직접 변수명을 바로 붙여 사용할 수 있고, 객체의 경우 내부에 있는 키 이름을 통해 바로 사용할 수도 있어요.

app.get('/watch', function (req, res) {
    const query = req.query;

    const { v,t } = query;
    console.log(v);
    console.log(t);

    res.json({
        video: v,
        time: t
    })
});


이렇게 괄호를 열어 속성을 빼올 수 있어요.
(라이브러리 import 할 때처럼 속성명이 같아야해요)

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

const [a, b, c, d, e] = array;
console.log(a, b, c, d, e);

const Arr = [1,2,3,4,5];
let [index1, index2, , ...rest] = Arr;

console.log(index1); // 첫 번째 요소 가져오기 // 1
console.log(index2); // 두 번째 요소 가져오기 // 2
console.log(rest); // 네 번째, 다섯 번째 요소 가져오기 //[4,5]

배열은 순서가 가장 중요해요.

Map

JS의 Map은 키-값을 사용해 데이터를 저장합니다.
Object로 키-값으로 데이터를 저장하는데 왜 이름이 다를까요?
둘의 차이점을 알아보겠습니다.

Map과 Object의 차이점

  • 키(key)
    Object의 경우 integer, string, symbols와 같은 단순한 유형이어야 한다.
    결과적으로 사용되는 타입은 String이다.
    Map의 경우 어떠한 데이터 유형도 가능하다.
  • 요소 순서
    Map에서는 기존 요소들의 순서가 보존되지만 Object는 그렇지 않다.
// Object
const obj = {
  key : 'value'
};
// get
console.log(obj.key); // value
console.log(obj['key']); // value
// set
obj['newkey'] = 'newvalue';
obj.newkey = 'newvalue';

// Map
let db = new Map();

db.set(1, 'John'); // key로 value를 찾을 수 있는 한 쌍
db.set(2, 'Peter');
db.set(3, 'Amy');

console.log(db); Map(3) // { 1 => 'John', 2 => 'Peter', 3 => 'Amy' }
console.log(db.get(2)); // Peter
db.set(2, 'Jack');
console.log(db.get(2)); // Jack

Map과 Object 중 무엇을 사용할지 고민하는 경우

각 개별 요소에 대해 적용해야 하는 로직이 있는 경우 Object 사용
실행 시까지 키를 알 수 없고, 모든 키가 동일한 type이며 모든 값들이 동일한 type일 경우 Map을 사용해봅시다.

네이밍 규칙

파일, 변수, 폴더, 함수 등 이름이 필요한 곳이 많습니다.
그런데 이 이름들이 통일성이 없고 본인이 원하는 대로 만들어지면 어떻게 될까요?
찾으려고 하는 것을 찾기 힘들뿐더러 하나의 파일을 읽기도 힘들 겁니다.
그렇기에 네이밍 규칙이라는 것이 있습니다.

camelCase : 두 번째 이상의 단어는 첫 글자를 대문자로 사용한다.
PascalCase : camelCase에서 첫 번째 단어의 첫 글자도 대문자로 사용한다.
snake_case : _(언더바)를 이용해 단어를 구분한다.
kebab-case : -(하이픈)을 이용해 단어를 구분한다.

  • 노드 파일에는 주로 소문자와 케밥 케이스를 사용해요.
profile
할 땐 하고 놀 땐 노는 일일놀놀입니다.

0개의 댓글