📘 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 설계
- 요청과 응답 객체 활용
다음 장에서는 데이터 처리를 위한 구조와 모델 설계를 다룬다.
'Software > JavaScript' 카테고리의 다른 글
| Node.js 실무 백엔드 개발 #2 (0) | 2026.06.21 |
|---|---|
| Node.js 실무 백엔드 개발 #1 (0) | 2026.06.14 |
| javascript 시작하기 - 비트박스 리듬 (0) | 2026.05.14 |
| Javascript 시작하기 - 비트박스 (0) | 2026.05.13 |
| Javascript 시작하기 - 그림판 (0) | 2026.05.10 |
