웹 애플리케이션을 개발하면서 가장 많이 접하게 되는 기술 중 하나가 바로 REST API입니다. REST API는 클라이언트와 서버 간의 통신을 용이하게 해주며, 다양한 플랫폼에서 정보를 주고받는 데 필수적입니다. 이번 글에서는 PHP와 MySQL을 사용하여 REST API를 구축하는 방법을 단계별로 설명하겠습니다.
환경 설정
우선 PHP와 MySQL이 설치된 환경을 준비해야 합니다. 로컬 개발 환경을 위해 XAMPP, MAMP 또는 LAMP 스택을 사용할 수 있습니다. XAMPP를 사용하는 예를 들어 보겠습니다.
- XAMPP 다운로드하여 설치합니다.
- XAMPP Control Panel을 실행하고 Apache와 MySQL 서비스를 시작합니다.
- 웹 브라우저에서
http://localhost/phpmyadmin에 접속하여 데이터베이스를 생성합니다. 데이터베이스 이름은api_db로 하겠습니다. - 사용자 생성 (POST)
- 모든 사용자 조회 (GET)
- 특정 사용자 조회 (GET)
CREATE DATABASE api_db;
USE api_db;
CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL UNIQUE
);
프로젝트 구조 설정
프로젝트의 구조를 설정합니다. 예를 들어 다음과 같은 폴더 구조를 만들어보세요.
/api_project
/config
config.php
/public
index.php
/src
User.php
데이터베이스 연결
config.php 파일을 config 폴더에 생성하여 데이터베이스 연결을 구성합니다.
<?php
$host = 'localhost';
$db = 'api_db';
$user = 'root';
$pass = '';
try {
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
사용자 모델 생성
User.php 파일을 src 폴더에 생성하고, 사용자 정보를 처리할 클래스를 작성합니다.
<?php
class User {
private $pdo;
public function __construct($pdo) {
$this->pdo = $pdo;
}
public function createUser($name, $email) {
$stmt = $this->pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
return $stmt->execute([$name, $email]);
}
public function getAllUsers() {
$stmt = $this->pdo->query("SELECT FROM users");
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function getUser($id) {
$stmt = $this->pdo->prepare("SELECT FROM users WHERE id = ?");
$stmt->execute([$id]);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
}
?>
REST API 엔드포인트 구현
index.php 파일에 REST API의 엔드포인트를 구현합니다. 이 예제에서는 사용자의 생성 및 조회 기능을 제공합니다.
<?php
header('Content-Type: application/json');
require '../config/config.php';
require '../src/User.php';
$userModel = new User($pdo);
$requestMethod = $_SERVER["REQUEST_METHOD"];
switch ($requestMethod) {
case 'POST':
$data = json_decode(file_get_contents("php://input"), true);
$name = $data['name'];
$email = $data['email'];
$result = $userModel->createUser($name, $email);
echo json_encode(['success' => $result]);
break;
case 'GET':
if (isset($_GET['id'])) {
$user = $userModel->getUser($_GET['id']);
echo json_encode($user);
} else {
$users = $userModel->getAllUsers();
echo json_encode($users);
}
break;
default:
echo json_encode(['error' => 'Invalid request method']);
break;
}
?>
테스트하기
API를 테스트하는 방법은 Postman이나 cURL을 사용할 수 있습니다. 여기서는 Postman을 이용한 간단한 테스트 방법을 소개합니다.
- URL: http://localhost/api_project/public/index.php
- Method: POST
- Body: JSON 형식
{
"name": "John Doe",
"email": "[email protected]"
}
- URL: http://localhost/api_project/public/index.php
- Method: GET
http://localhost/api_project/public/index.php?id=1
- Method: GET
마무리
이번 글에서는 PHP와 MySQL을 활용하여 간단한 REST API를 구축하는 과정을 살펴보았습니다. 기본적인 사용자 생성 및 조회 기능을 구현했으며, 이를 통해 기본적인 API 설계를 이해할 수 있었기를 바랍니다. REST API는 다양한 클라이언트와의 통신을 가능하게 해주는 중요한 요소입니다. 향후 더 복잡한 기능, 예를 들어 업데이트 및 삭제 작업을 추가하는 것도 고려해보세요. API 보안 및 인증에 대한 내용도 중요하므로, 다음 단계로 나아가기 위해 관련 자료를 찾아보는 것을 추천합니다.