Ответ
Нет, не является. REST (Representational State Transfer) — это архитектурный стиль, а не протокол. Его принципы теоретически могут быть реализованы поверх любого подходящего протокола прикладного уровня.
Почему HTTP стал де-факто стандартом для REST:
- Идеальное соответствие принципам: HTTP — stateless (без состояния), имеет четкие методы (GET, POST, PUT, DELETE, PATCH), которые напрямую отображаются на операции CRUD (Create, Read, Update, Delete).
- Универсальность и инфраструктура: HTTP поддерживается везде (браузеры, серверы, мобильные приложения), имеет встроенные механизмы кэширования (заголовки Cache-Control), аутентификации и роутинга.
- Широкие инструменты: Существует огромная экосистема инструментов для разработки, тестирования и документирования 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, так как это наиболее практичный и стандартизированный способ.