PHP REST API с нуля: простое руководство с примерами
REST API - это способ, который позволяет разным приложениям обмениваться данными через HTTP. Например, фронтенд на React или мобильное приложение может получать данные с PHP-сервера в формате JSON.
В этой статье разберём, как создать простое REST API на чистом PHP без фреймворков.
Что мы будем делать
Создадим базовое API для работы с пользователями:
получить список пользователей
получить одного пользователя
создать пользователя
удалить пользователя
Структура проекта
/api
index.php
db.php
users.php
Подключение к базе данных (MySQL)
Файл db.php:
<?php
$host = "localhost";
$db = "test_db";
$user = "root";
$pass = "";
try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(["error" => "Database connection failed"]);
exit;
}Таблица пользователей
SQL:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);Главный роутер API
Файл index.php:
<?php
header("Content-Type: application/json");
require "db.php";
require "users.php";
$method = $_SERVER['REQUEST_METHOD'];
$path = $_SERVER['REQUEST_URI'];
if (strpos($path, "/users") !== false) {
handleUsers($method, $pdo);
} else {
http_response_code(404);
echo json_encode(["error" => "Route not found"]);
}Логика API пользователей
Файл users.php:
<?php
function handleUsers($method, $pdo)
{
if ($method === "GET") {
getUsers($pdo);
}
if ($method === "POST") {
createUser($pdo);
}
}Получить всех пользователей
function getUsers($pdo)
{
$stmt = $pdo->query("SELECT * FROM users");
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($users);
}Создать пользователя
function createUser($pdo)
{
$data = json_decode(file_get_contents("php://input"), true);
if (!isset($data['name']) || !isset($data['email'])) {
http_response_code(400);
echo json_encode(["error" => "Invalid input"]);
return;
}
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->execute([$data['name'], $data['email']]);
echo json_encode(["message" => "User created"]);
}Как протестировать API
GET запрос
GET http://localhost/api/usersPOST запрос (JSON)
{
"name": "Ivan",
"email": "ivan@mail.com"
}Как это работает
PHP принимает HTTP запрос
Определяет метод (GET, POST)
Обрабатывает данные
Отдаёт ответ в JSON
Улучшения (следующий уровень)
Когда базовое API работает, можно добавить:
PUT /users (обновление)
DELETE /users/{id}
роутинг через массив маршрутов
JWT авторизацию
валидацию данных
разделение контроллеров
Пример расширенного DELETE
function deleteUser($pdo)
{
$data = json_decode(file_get_contents("php://input"), true);
$stmt = $pdo->prepare("DELETE FROM users WHERE id = ?");
$stmt->execute([$data['id']]);
echo json_encode(["message" => "User deleted"]);
}Итог
REST API на PHP - это не сложно. Даже без Laravel можно собрать полноценный backend, который:
работает с JSON
обрабатывает HTTP запросы
подключается к базе данных
расширяется до полноценного сервиса
Главное - понимать структуру и логику запросов.
Комментарии
Чтобы оставить комментарий, войдите в аккаунт.