PHP REST API с нуля: простое руководство с примерами

mr. Cooper 2 часа назад Веб-разработка
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/users

POST запрос (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 запросы

  • подключается к базе данных

  • расширяется до полноценного сервиса

Главное - понимать структуру и логику запросов.

Комментарии

Пока нет комментариев. Будьте первым, кто напишет.

Чтобы оставить комментарий, войдите в аккаунт.

Похожие статьи