고양이와 코딩

[웹 풀사이클 데브코스 TIL] 5주차 Day 5 - REST API 개발 실습 (2) 본문

데브코스 TIL

[웹 풀사이클 데브코스 TIL] 5주차 Day 5 - REST API 개발 실습 (2)

ovovvvvv 2023. 12. 15. 17:38
728x90

Node.js 에서의 Router와 Route

node.js에서 Router와 Route는 URL에 따라 루트(route)를 정해줍니다 (경로 처리 및 요청)

 

Router

'Router'는 URL 경로를 기반으로 들어오는 HTTP 요청을, 적절한 핸들러 함수에 매핑하는 데 사용됩니다.
Nodejs에서 'Router'는 클라이언트의 요청을 처리하는데 사용되고, 또 URL 경로와 그에 따른 처리 로직을 연결합니다!

→ 이를 통해 다양한 엔드포인트들을 관리, 분류합니다 (ू•‧̫•ू⑅)oh

Route

'Route'는 특정 URL 경로로 들어오는 요청에 대한 핸들링을 정의합니다. 

'Router' 내의 각각의 'Route'는 특정 URL 경로와 연결되며, 해당 경로로 들어오는 요청에 대한 처리 방식을 지정합니다.

HTTP 메서드(GET, POST, PUT, DELETE ...)

 

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

const router = express.Router();

router.get('/home', (req, res) => {
    res.send('Home Page');
});

router.post('/user', (req, res) => {
    res.send('User Created/Updated');
});

app.use('/', router);

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

위 코드에서 /home, /user가 Route를 정의한 부분입니다! 

'get'과 'post' 메서드가 각 'GET', 'POST' HTTP 요청에 대응해서 저 URL에 대한 요청이 발생하면, 핸들러 함수가 실행됩니다.

 

channels 전체 조회 예외처리

1. userId가 body에 없는 경우

2. userId가 가진 채널이 없는 경우

router
    .route('/')
    .get((req, res )=> {
        let { userId } = req.body
        var channels = []

        if(db.size && userId){    
            db.forEach((value, key) => {
                if (value.userId === userId){
                    channels.push(value)
                    }
                });

                if(channels.length){
                    res.status(200).json(channels)
                } else {
                    res.status(404).json({
                        message :"조회할 채널이 없습니다."
                    })
                }
                } else {
                res.status(404).json({
                message :"조회할 채널이 없습니다."
            })
          }
        }) // 채널 전체 조회

if문이 너무 많닿.... 😭

 

오늘은 대부분 전에 해봤던 로직 구현 + 예외처리라서 따로 TIL에 작성할 내용이 많지는 않았는데요,
그럼에도 불구하고 강의를 잠깐 놓치면 눈이 빙빙 도는 if else 문 ... 그리고 많아지는 예외처리 때문에
정신 똑바로 차리고 강의를 들어야겠다는 생각이 들었습니다.

그래도 앞으로 제대로 API를 구현하고, 또 프론트엔드와 합쳐서 하나의 웹을 만들게 될 날이 더욱 더 기대가 됩니다 ...
화이팅 *ੈ✩‧₊˚(๑ ᐢ ᵕ ᐢ ๑)𝚈𝙾𝚄𝚁 𝚃𝙷𝙴 𝙱𝙴𝚂𝚃*ੈ✩‧₊˚