Express 연습하기

ssomae·2024년 9월 2일

DevCourse

목록 보기
9/29
post-thumbnail

📌 req.params의 문제점

자바스크립트에서는 타입이 크게 존재하지 않고, 자바스크립트 엔진의 암묵적 형변환으로 인해
문자열과 숫자간의 연산이 에러없이 돌아가지만 이게 문제가 될 수 있다.

const { application } = require('express')
const express = require('express')
const app = express()

// 서버 셋팅: 포트 넘버 1234로 셋팅
app.listen(1234)

//GET 메소드로, /url 주소가 날라오면
// 매개변수로 전달받은 콜백 함수를 호출하겠어 => 서버에 셋팅

app.get('/product/:n', function (req, res) {
    // : => URL로 매개변수를 전달해줄 건가보다.
    // req.params
    // product/_ 빈칸에 오는 값을 n이라는 변수에 담아줘

    // console.log(req.params);
    // console.log(req.params.n);

    let number = parseInt(req.params.n);
    if (req.params.n - 10> 5) {
        console.log("URL로 전달받은 숫자가 10보다 큽니다.");
    }
    res.json({
        num: req.params.n
    })
})

parseInt 를 통해 문자열을 정수로 형변환 잘 시켜줘야한다.

유튜브로 연습해보기

// 영상 주소 : https://www.youtube.com/watch?v=AjB3f0A1iaQ
// 타임라인 주소 : https://www.youtube.com/watch?v=AjB3f0A1iaQ&t=278s

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

    // res.json({
    //     channel: param.nickname
    // })
})
  • 주소들의 ? 뒤에 오는 쿼리들을 처리해보자

![]

// 영상 주소
// 영상 주소 : https://www.youtube.com/watch?v=AjB3f0A1iaQ
// 타임라인 주소 : https://www.youtube.com/watch?v=AjB3f0A1iaQ&t=278s

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

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


객체의 비구조화

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

    //JSON의 비구조화
    const { v, t } = req.query;
    console.log(v);
    console.log(t);
    res.json({
        video: q.v,
        timeline : q.t
    });
})

객체 2개 만들어서 테스트해보기

const { application } = require('express')
const express = require('express')
const app = express()

// 서버 셋팅: 포트 넘버 1234로 셋팅
app.listen(1234)

//채널 주소 https://www.youtube.com/@15ya.fullmoon
//채널 주소 https://www.youtube.com/@ChimChakMan_Official

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

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

let youtuber3 = {
    channelTitle: "테오",
    subscriber: "100만명",
    videoNum: "1100개"
}

app.get('/:nickname', function (req, res) {

    const { nickname } = req.params;
    if (nickname === "@15ya.fullmoon") {
        res.json(youtuber1);
    }else if (nickname === "@ChimChakMan_Official") {
        res.json(youtuber2);
    }else if (nickname === "@TEO_universe") {
        res.json(youtuber3);
    } else {
        res.json({
            message: "FIND ERROR"
        })
    }

    
})


Map을 활용하여 자료 만들기

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

// 서버 셋팅: 포트 넘버 1234로 셋팅
app.listen(1234)

app.get('/', function (req, res) {
    res.send("Hello World");
})

//localhost:1234/1 => Notebook
//localhost:1234/2 => Cup
//localhost:1234/3 => Chair

app.get('/:id', function (req, res) {
    const { id } = req.params
    
    if (db.get(id) === undefined) {
        console.log("undefined Test");
        res.json({
            message: "없는 상품입니다."
        })
    } else {
        res.json({
            id: id,
            productName: db.get(parseInt(id))
        })
    }
})
let db = new Map();
db.set(1, "NoteBook"); // key- value
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));
profile
성장해나갈 개발자

0개의 댓글