📘 Node.js 실무 백엔드 개발

 

📖 3장. 라우팅과 API 설계


3.1 라우팅의 개념

라우팅(Routing)은 클라이언트의 요청 URL과 HTTP 메서드에 따라
서버가 어떤 동작을 수행할지 결정하는 과정이다.

예를 들어:

GET /users      → 사용자 목록 조회  
POST /users     → 사용자 생성  
GET /users/1    → 특정 사용자 조회  

이처럼 URL과 메서드 조합으로 기능을 구분한다.


3.2 HTTP 메서드 이해

웹 API는 HTTP 메서드를 기반으로 동작한다.

메서드역할

GET 데이터 조회
POST 데이터 생성
PUT 데이터 수정
DELETE 데이터 삭제

이 구조를 기반으로 REST API를 설계한다.


3.3 Express.js 라우팅 기본

Express에서는 다음과 같은 방식으로 라우트를 정의한다:

app.get('/users', (req, res) => {
  res.send('사용자 목록');
});

3.4 라우트 분리의 필요성

초기에는 모든 코드를 하나의 파일에 작성할 수 있지만,
프로젝트가 커질수록 다음 문제가 발생한다:

  • 코드 가독성 저하
  • 유지보수 어려움
  • 기능별 분리 불가능

따라서 라우트를 분리해야 한다.


3.5 라우터 모듈화

Express는 라우터를 모듈로 분리할 수 있다.

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

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

module.exports = router;

그리고 메인 파일에서 연결한다:

app.use('/users', userRoutes);

3.6 URL 설계 원칙

좋은 API는 일관된 URL 구조를 가진다.

기본 규칙

  • 명사는 복수형 사용: /users
  • 동사는 사용하지 않음
  • 계층 구조 표현: /users/1/posts

3.7 REST API 설계

REST(Representational State Transfer)는
자원을 중심으로 API를 설계하는 방식이다.


예시: 게시판 API

GET    /posts        → 게시글 목록  
GET    /posts/1      → 게시글 상세  
POST   /posts        → 게시글 생성  
PUT    /posts/1      → 게시글 수정  
DELETE /posts/1      → 게시글 삭제  

3.8 요청(Request) 객체

Express에서 요청 정보는 req 객체로 전달된다.

주요 속성:

  • req.params: URL 파라미터
  • req.query: 쿼리 문자열
  • req.body: 요청 데이터

예시

app.get('/users/:id', (req, res) => {
  console.log(req.params.id);
});

3.9 응답(Response) 객체

서버는 res 객체를 통해 응답을 반환한다.

주요 메서드:

  • res.send()
  • res.json()
  • res.status()

예시

res.status(200).json({ message: '성공' });

3.10 상태 코드 (HTTP Status Code)

상태 코드는 요청 결과를 나타낸다.

코드의미

200 성공
201 생성 완료
400 잘못된 요청
401 인증 필요
404 리소스 없음
500 서버 오류

3.11 API 설계 시 주의사항

  • 일관된 URL 구조 유지
  • 상태 코드 정확히 사용
  • 응답 형식 통일
  • 불필요한 데이터 제외

3.12 정리

이 장에서는 라우팅과 REST API 설계의 기본 개념을 학습하였다.

핵심 내용:

  • 라우팅은 URL과 메서드로 동작
  • REST 방식으로 API 설계
  • 요청과 응답 객체 활용

다음 장에서는 데이터 처리를 위한 구조와 모델 설계를 다룬다.

+ Recent posts