[Node.js] routing이란 무엇인가?

장일규·2022년 5월 18일
0
post-thumbnail

routing이란?

routes에 뜻을 찾아보면 노선이라는 뜻이 있다.

라우팅에 의미를 찾아보면 어떤 네트워크 안에서 통신 데이터를 보낼 때 최적의 경로를 선택하는 과정이다.

routing이해하기

최상위 디렉토리 아래에는 하위 디렉토리들이 있다.
하위 주소로 가기 위한 핸들링을 routing이라고 한다.
이때, HTTP 요청 메소드(GET, POST)를 통하여 회원을 등록,수정,삭제,조회를 할 수 있다.

routing은 및 특정한 HTTP 요청 메소드(GET, POST 등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것을 말한다.

라우트 정의

app.METHOD(PATH, HANDLER)
  • app은 express의 인스턴스이다.
  • METHOD는 HTTP 요청 메소드이다.
  • PATH는 서버에서의 경로이다.
  • HANDLER는 라우트가 일치할 때 실행되는 함수이다.

METHOD 종류

  • app.get : 가져오다
  • app.post : 생성하다
  • app.put: 전체 수정
  • app.delete: 제거
  • app.patch: 부분 수정 (수정작업은 대부분 patch로 활용하게 됨)
  • app.options: 찔러보기
  • app.head: 헤더만 불러옴, 거의 안씀.

routing의 필요성

// 🗂 app.js
const express = require('express')
const app = express()
const port = 3000

const { StatusCodes } = require('http-status-codes');
const bodyParser = require('body-parser');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

// 회원 한 명을 조회
app.get('/user', (req, res) => {
    res.status(StatusCodes.OK).json({
        message: "getUser"
    });
});

// 한 명에 회원 등록
app.post('/user', (req, res) => {
    res.status(StatusCodes.CREATED).json({
        message: "create"
    });
    console.log(req.body);
});

// 모든 회원 조회
app.get('users', (req, res) => {
    res.status(StatusCodes.OK).json({
        message: "get users"
    });
});

// 한 명에 회원 수정
app.patch('/users', (req, res) => {
    res.status(StatusCodes.OK).json({
        message: "updated user"
    });
});

// 한 명에 회원 삭제
app.delete('/users', (req, res) => {
    res.status(StatusCodes.delete).json({
        message: "delete user"
    });
});

// server
app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
});

app.js 메인 파일 안에 라우팅 경로를 전부 정의하였다.

user create 예시

1.회원 등록

클라이언트가 input필드에 이름과 나이를 입력하면 서버로 전송될 때,body에 json형식으로 실려서 전달이 된다.

routing(PATH)에 대한 Handler실행

  • HTTP 요청 메소드는 POST이다.
  • routing은 빨간 박스 부분인 /user이다.
  • 해당 라우팅으로 가면 녹색 박스 부분인 HANDLER부분이 실행이 된다.

서버에서 클라이언트에 응답

⛔️문제점

위와 같이 app.js에 routing관련 로직을 작성하여도 실행에는 문제는 없다.

프로젝트가 복잡해지고, 규모가 커질수록 app.js파일에 역할이 많아진다.

app.js는 서버도 띄워야하고.. 미들웨어도 실행해야하고.. 사용자 요청이 오면 그에 맞는 핸들링도 해야하고...

가독성과 유지보수를 생각하여 기능 단위로 파일을 분리하여 routing을 하는 과정이 필요하다.

다음 시간에는 router를 분리해보고자 한다.

ref

기본 라우팅

0개의 댓글