7.7 REST API 구현

약 10분

본문 듣기
읽기 설정

글자 크기

줄 간격

글꼴

7.7 REST API 구현

REST API란?

REST(Representational State Transfer) API는 웹에서 자원을 주고받기 위한 아키텍처 스타일입니다. HTTP 프로토콜을 기반으로 클라이언트와 서버 간의 통신을 규정하며, 각 자원은 URI(Uniform Resource Identifier)로 접근하게 됩니다. REST API의 이점은 다음과 같습니다:

  • 클라이언트와 서버 간의 독립성 유지
  • 표준화된 방법으로 다양한 데이터 포맷(J JSON, XML 등) 지원
  • 상태가 없는(stateless) 통신으로 서버의 부담 감소

PHP로 REST API 구현하기

PHP를 사용하여 간단한 REST API를 구현해봅시다. 다음 단계로 진행하겠습니다:

  1. 데이터베이스 테이블 생성
  2. PHP 파일에서 REST API 엔드포인트 생성
  3. 요청에 따른 적절한 HTTP 응답 반환

1. 데이터베이스 테이블 생성

회원 정보를 저장할 "users" 테이블을 생성하겠습니다.

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. PHP 파일에서 REST API 엔드포인트 생성

"api.php" 파일을 생성하고 아래 코드를 추가합니다:

<?php
header('Content-Type: application/json; charset=utf-8');

$method = $_SERVER['REQUEST_METHOD'];
$dsn = 'mysql:host=localhost;dbname=your_database';
$username = 'your_username';
$password = 'your_password';

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo json_encode(['error' => 'Database connection failed']);
    exit;
}

switch ($method) {
    case 'GET':
        // 코드: 모든 사용자 조회
        $stmt = $pdo->query('SELECT * FROM users');
        $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
        echo json_encode($users);
        break;
    case 'POST':
        // 코드: 새 사용자 추가
        $input = json_decode(file_get_contents('php://input'), true);
        $stmt = $pdo->prepare('INSERT INTO users (username, password, email) VALUES (?, ?, ?)');
        $stmt->execute([$input['username'], password_hash($input['password'], PASSWORD_BCRYPT), $input['email']]);
        echo json_encode(['status' => 'User created']);
        break;
    // UPDATE, DELETE 케이스도 추가 가능
    default:
        echo json_encode(['error' => 'Method not allowed']);
}
?>

3. 요청에 따른 HTTP 응답 반환

위 코드에서 요청 메소드를 판단하여 GET 요청 시 모든 사용자를 조회하고, POST 요청 시 새 사용자를 추가합니다. 필요에 따라 UPDATE와 DELETE 기능을 추가할 수 있습니다.

실습 과제

  1. 위 코드를 바탕으로 사용자를 검색하는 GET API와 사용자를 삭제하는 DELETE API를 구현해보세요.
  2. MVC 패턴을 적용하여 코드를 리팩토링 해보세요.

정리

이제 REST API의 기본 개념 및 PHP로 구현하는 방법을 배웠습니다. 실무에서는 REST API가 거의 필수적이며, 다양한 프레임워크(예: Laravel)에서도 RESTful 방법론을 따라서 개발하게 됩니다.

코드 sql
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
코드 php
<?php
header('Content-Type: application/json; charset=utf-8');

$method = $_SERVER['REQUEST_METHOD'];
$dsn = 'mysql:host=localhost;dbname=your_database';
$username = 'your_username';
$password = 'your_password';

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo json_encode(['error' => 'Database connection failed']);
    exit;
}

switch ($method) {
    case 'GET':
        $stmt = $pdo->query('SELECT * FROM users');
        $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
        echo json_encode($users);
        break;
    case 'POST':
        $input = json_decode(file_get_contents('php://input'), true);
        $stmt = $pdo->prepare('INSERT INTO users (username, password, email) VALUES (?, ?, ?)');
        $stmt->execute([$input['username'], password_hash($input['password'], PASSWORD_BCRYPT), $input['email']]);
        echo json_encode(['status' => 'User created']);
        break;
    default:
        echo json_encode(['error' => 'Method not allowed']);
}
?>

댓글 0

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.