Является ли работа по HTTP обязательным условием для REST API?

«Является ли работа по HTTP обязательным условием для REST API?» — вопрос из категории Сети, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, не является. REST (Representational State Transfer) — это архитектурный стиль, а не протокол. Его принципы теоретически могут быть реализованы поверх любого подходящего протокола прикладного уровня.

Почему HTTP стал де-факто стандартом для REST:

  1. Идеальное соответствие принципам: HTTP — stateless (без состояния), имеет четкие методы (GET, POST, PUT, DELETE, PATCH), которые напрямую отображаются на операции CRUD (Create, Read, Update, Delete).
  2. Универсальность и инфраструктура: HTTP поддерживается везде (браузеры, серверы, мобильные приложения), имеет встроенные механизмы кэширования (заголовки Cache-Control), аутентификации и роутинга.
  3. Широкие инструменты: Существует огромная экосистема инструментов для разработки, тестирования и документирования HTTP-API.

Пример RESTful-подхода поверх HTTP:

// Получение ресурса (Read) - GET
$userData = file_get_contents('https://api.example.com/users/123');
// Создание ресурса (Create) - POST
$context = stream_context_create([
    'http' => [
        'method' => 'POST',
        'header' => 'Content-Type: application/json',
        'content' => json_encode(['name' => 'Alice'])
    ]
]);
$response = file_get_contents('https://api.example.com/users', false, $context);

Теоретическая альтернатива: Можно представить RESTful-сервис, использующий протокол CoAP (для IoT-устройств) или даже FTP, где операции GET (скачать), PUT (загрузить), DELETE (удалить) также существуют. Однако на практике, говоря "REST API", почти всегда подразумевают реализацию поверх HTTP/HTTPS, так как это наиболее практичный и стандартизированный способ.