React와 Node.js를 사용한 웹 애플리케이션 개발

React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(11)

atomicdev 2024. 9. 19. 04:33
728x90

RESTful API 개념 이해 및 Express로 간단한 API 만들기

이번 강의에서는 RESTful API의 개념과 설계 방법을 배우고, Express.js를 사용하여 간단한 API 엔드포인트를 만드는 방법을 알아보겠습니다. RESTful API는 웹 애플리케이션 간에 데이터를 주고받는 방식으로, 표준화된 구조를 통해 다양한 클라이언트가 API를 쉽게 사용할 수 있게 해줍니다.

RESTful API 개념 이해 및 Express로 간단한 API 만들기


1. RESTful API 개념

**REST(Representational State Transfer)**는 HTTP를 기반으로 클라이언트와 서버 간에 데이터를 주고받는 아키텍처 스타일입니다. RESTful API는 이러한 원칙을 따르는 API로, 각 URL이 리소스(데이터)를 나타내고, HTTP 메서드를 사용해 리소스를 처리합니다.

1.1 주요 HTTP 메서드

  • GET: 리소스 조회
  • POST: 리소스 생성
  • PUT: 리소스 전체 수정
  • PATCH: 리소스 일부 수정
  • DELETE: 리소스 삭제

1.2 RESTful API 설계 원칙

  1. 리소스 기반 설계: URL은 리소스를 나타내며, 예를 들어 /users는 사용자 데이터를 의미합니다.
  2. HTTP 메서드 사용: 각 메서드는 리소스에 대한 특정 작업을 나타냅니다.
  3. 상태 정보 없음(stateless): 각 요청은 독립적이며, 서버는 요청 간의 상태를 저장하지 않습니다.
  4. 표준 응답 코드: 성공, 실패 등의 상태를 나타내기 위해 HTTP 상태 코드를 사용합니다.

2. Express로 간단한 API 엔드포인트 만들기

이제 Express.js를 사용해 간단한 RESTful API 엔드포인트를 만들어 보겠습니다. 예시로 사용자 데이터를 다루는 API를 구현합니다.

2.1 Express 설치

프로젝트 폴더를 만들고, Express를 설치합니다.

mkdir rest-api-example
cd rest-api-example
npm init -y
npm install express

2.2 간단한 API 엔드포인트 생성

server.js 파일을 생성하고, Express 서버와 API 엔드포인트를 설정합니다.

// server.js
const express = require('express');
const app = express();
app.use(express.json()); // JSON 데이터를 처리하기 위해 필요

// 간단한 사용자 데이터
let users = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
];

// GET 요청: 모든 사용자 조회
app.get('/users', (req, res) => {
  res.json(users);
});

// GET 요청: 특정 사용자 조회
app.get('/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (!user) return res.status(404).send('User not found');
  res.json(user);
});

// POST 요청: 새로운 사용자 추가
app.post('/users', (req, res) => {
  const newUser = {
    id: users.length + 1,
    name: req.body.name,
  };
  users.push(newUser);
  res.status(201).json(newUser);
});

// PUT 요청: 사용자 정보 수정
app.put('/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (!user) return res.status(404).send('User not found');

  user.name = req.body.name;
  res.json(user);
});

// DELETE 요청: 사용자 삭제
app.delete('/users/:id', (req, res) => {
  const userIndex = users.findIndex(u => u.id === parseInt(req.params.id));
  if (userIndex === -1) return res.status(404).send('User not found');

  const deletedUser = users.splice(userIndex, 1);
  res.json(deletedUser);
});

// 서버 실행
const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

2.3 코드 설명

  • GET /users: 모든 사용자 목록을 반환합니다.
  • GET /users/: 특정 id에 해당하는 사용자의 정보를 반환합니다.
  • POST /users: 새로운 사용자를 추가합니다.
  • PUT /users/: 특정 id의 사용자 정보를 수정합니다.
  • DELETE /users/: 특정 사용자를 삭제합니다.

2.4 API 테스트

Express 서버를 실행한 후, Postman이나 브라우저에서 각 API 엔드포인트를 테스트해볼 수 있습니다.

node server.js
 
  • GET 요청: http://localhost:3000/users에 GET 요청을 보내면, 모든 사용자 데이터를 볼 수 있습니다.
  • POST 요청: Postman을 사용하여 http://localhost:3000/users에 POST 요청을 보내고, {"name": "Charlie"}와 같은 JSON 데이터를 전송하면 새로운 사용자가 추가됩니다.
  • PUT 요청: 특정 사용자의 name을 수정하려면 PUT 요청을 보냅니다.
  • DELETE 요청: 특정 사용자를 삭제하려면 DELETE 요청을 보냅니다.

3. RESTful API 설계 고려사항

  1. 명확한 URL 설계: 각 URL은 리소스를 나타내며, 직관적이어야 합니다.
    • 예: /users, /users/:id
  2. HTTP 메서드의 적절한 사용: CRUD 작업에 맞는 HTTP 메서드를 사용합니다.
    • GET: 데이터를 조회할 때
    • POST: 새로운 데이터를 생성할 때
    • PUT: 기존 데이터를 수정할 때
    • DELETE: 데이터를 삭제할 때
  3. 상태 코드: 응답할 때 적절한 HTTP 상태 코드를 반환해야 합니다.
    • 200: 성공적인 요청
    • 201: 새로운 리소스가 성공적으로 생성됨
    • 404: 리소스를 찾을 수 없음
    • 500: 서버 오류 발생

4. 프로젝트 구조

간단한 RESTful API 프로젝트의 기본 구조는 다음과 같습니다:

rest-api-example/
│
├── server.js        // Express 서버와 API 엔드포인트 설정
└── package.json     // 프로젝트 설정 파일

결론

이번 강의에서는 RESTful API의 기본 개념을 이해하고, Express.js를 사용해 간단한 API를 만드는 방법을 배웠습니다. RESTful API는 데이터를 표준화된 방식으로 주고받을 수 있게 해주며, 클라이언트와 서버 간의 명확한 데이터 교환을 가능하게 합니다.

728x90