[프로그래머스 데브코스] TIL - 4주차 DAY5

방울·2024년 5월 5일
0

🏷️ 백엔드 기초 마무리!

Server와 Router의 역할

  • Server: 클라이언트로부터 HTTP 요청을 받는다. 서버는 이 요청을 처리하기 위해 필요한 리소스를 관리하고, 요청에 따른 적절한 응답을 반환한다.
  • Router: 요청을 받은 URL 및 HTTP 메소드에 따라 적절한 핸들러 함수로 요청을 전달한다. 라우터는 특정 경로(route)에 따라 처리할 로직을 정해준다.

Node.js에서의 라우팅이란?

Node.js에서 라우팅은 요청이 왔을 때 URL과 메소드에 기반하여 처리 함수(콜백 함수)를 호출하는 과정이다. 원하는 경로에 따라 적절한 방향으로 경로를 안내해주는 것이다.

const express = require('express');
const router = express.Router();

router.get('/api/path', (req, res) => {
    res.send('Response for GET request');
});

router.post('/api/path', (req, res) => {
    res.send('Response for POST request');
});

모듈화

Node.js에서는 자체적으로 개발한 서버 코드를 모듈로 만들어 다른 JavaScript 파일에서 재사용할 수 있다. module.exportsrequire()를 통해 이루어진다.

// server.js
const express = require('express');
const app = express();
module.exports = app;

// index.js
const server = require('./server');
server.listen(3000);

ERD(Entity Relationship Diagram) 설계

간단하게 ERD 작성해보기

회원

user_idpasswordname
test11234tester1
test25678tester2

채널

idchannel_titleuser_idsub_numvideo_num
1채널은방울방울test1
2회원은방울방울test1
3테스트는방울방울test2

(* 데이터베이스에서 이름 지을 땐 snake 방식 사용)

채널 API 설계 수정 및 예외 처리

ERD 그리다보니 userId가 필요하다고 생각되어 API 수정(언제든지 맞지 않다고 생각되거나, 고도화 할 생각이 있다면 설계를 뜯어고치면 된다. 겁먹지 말자!)

  • 채널 생성 API
    요청: POST /channel
    본문: { "channelTitle": "New Channel", "userId": "user1" }
    응답: 201 Created

  • 회원별 채널 조회 API
    요청: GET /channels/user1
    응답: 200 OK, 채널 리스트 반환

예외 처리 고도화

복잡한 if문을 간소화하고 함수를 통해 재사용 가능한 코드 조각을 만들어 예외 처리를 효과적으로 수행할 수 있다.

function notFoundChannel(res) {
    res.status(404).json({ message: '채널을 찾을 수 없습니다.' });
}

if (!channel) {
    notFoundChannel(res);
}
profile
방울방울

0개의 댓글