🌐
EPISODE 05
자원/행위 · HTTP 메서드 · 상태 코드 · JSON
REST API
REST 아키텍처 원칙(자원·행위·표현), HTTP 메서드별 역할(GET/POST/PUT/PATCH/DELETE), 상태 코드(200/201/400/404/500), express.json()을 익혀 RESTful API를 만듭니다.
RESTAPIHTTP
소요 시간
⏱ 45~60분
난이도
📊 중급
선수 조건
🎯 node-04
결과물
GET·POST·PUT·DELETE 모두 지원하는 todos API
이 강의에서 배우는 것
- 1REST URL을 자원(명사 복수형)으로 설계한다
- 2HTTP 메서드별 역할과 멱등성을 안다
- 3주요 상태 코드(2xx/4xx/5xx)를 적절히 반환한다
- 4express.json()으로 POST 바디를 파싱한다
- 5curl이나 Thunder Client로 API를 테스트한다
1. REST 핵심 개념
| 개념 | 설명 | 예시 |
|---|---|---|
| 자원(Resource) | API가 다루는 데이터 | 할 일, 유저, 상품 |
| 행위(Verb) | 자원에 대한 작업 | 조회, 생성, 수정, 삭제 |
| 표현(Representation) | 데이터 형식 | JSON |
URL 설계 원칙
text
자원은 명사·복수형, 행위는 HTTP 메서드로
GET /todos → 할 일 목록
GET /todos/1 → 특정 할 일
POST /todos → 할 일 생성
PUT /todos/1 → 전체 수정
PATCH /todos/1 → 일부 수정
DELETE /todos/1 → 삭제2. HTTP 메서드별 역할
| 메서드 | 역할 | 멱등성 | 바디 |
|---|---|---|---|
| GET | 조회 | O | X |
| POST | 생성 | X | O |
| PUT | 전체 수정 | O | O |
| PATCH | 일부 수정 | O | O |
| DELETE | 삭제 | O | X |
3. HTTP 상태 코드
text
2xx 성공
200 OK → 요청 성공
201 Created → 생성 성공
204 No Content → 응답 바디 없음
4xx 클라이언트 오류
400 Bad Request → 잘못된 요청
401 Unauthorized → 인증 필요
403 Forbidden → 권한 없음
404 Not Found → 자원 없음
5xx 서버 오류
500 Internal Server Errorjavascript
res.status(201).json({ id: 1, message: '생성 완료' });
res.status(404).json({ error: '항목을 찾을 수 없습니다.' });
res.status(500).json({ error: '서버 오류가 발생했습니다.' });4. JSON 응답
javascript
res.json({
success: true,
data: { id: 1, title: '할 일 1' },
});
res.json([
{ id: 1, title: '할 일 1' },
{ id: 2, title: '할 일 2' },
]);5. express.json() 미들웨어
javascript
app.use(express.json());
app.post('/todos', (req, res) => {
const { title, done } = req.body;
console.log(title, done);
});6. API 테스트
Thunder Client (VS Code)
VS Code에서 바로 API 테스트 가능.
curl
bash
# GET
curl http://localhost:3000/api/todos
# POST
curl -X POST http://localhost:3000/api/todos \
-H "Content-Type: application/json" \
-d '{"title": "Node.js 공부", "done": false}'
# DELETE
curl -X DELETE http://localhost:3000/api/todos/1