🤔 Разница в HTTP, REST и RESTful API 🤔
Вопросы “Что такое REST API?” или “Что такое RESTful API?” в разных вариациях и формулировках задают на технических собеседованиях системных аналитиков 👀
Чтобы уверенно отвечать на них и глубоко понимать значение REST API, необходимо знать этот набор определений:
1️⃣ API — это программный интерфейс для обмена данными между приложениями:
• мобильное приложение ↔ сервер
• сайт ↔ сервер
• один backend-сервис ↔ другой backend-сервис
• внутренняя система ↔ внешняя система
API определяет, как одна система может обратиться к другой: какие запросы отправлять, какие данные передавать и какие ответы получать.
2️⃣ HTTP — это один из основных протоколов обмена данными в Интернете.
Он определяет, как клиент и сервер обмениваются сообщениями:
• клиент отправляет запрос
• сервер обрабатывает его
• сервер возвращает ответ
HTTP включает:
• методы: GET, POST, PUT, PATCH, DELETE и другие
• статус-коды: 200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error и другие
• заголовки
• тело запроса и ответа
Важно: HTTP сам по себе ещё не делает API REST API.
Можно сделать HTTP API, где все методы будут через POST, с глаголами в URL и без нормальной ресурсной модели.
Например:
POST /createUser
POST /getUserInfo
POST /deleteUser
Это будет HTTP API, но не REST API.
3️⃣ REST (Representational State Transfer) — это архитектурный стиль для проектирования сетевых API.
Проще говоря, REST задаёт подход:
как правильно организовать взаимодействие клиента и сервера через ресурсы.
В REST данные представляются как ресурсы.
Например:
/users
/users/{userId}
/orders
/orders/{orderId}
С этими ресурсами выполняются действия через HTTP-методы:
GET /users/{userId}
POST /users
PUT /users/{userId}
PATCH /users/{userId}
DELETE /users/{userId}
То есть мы не пишем действие в URL, а используем связку:
HTTP-метод + ресурс
Если этот принцип не соблюдается, то это чаще просто HTTP API, а не REST API.
4️⃣ REST API — архитектурный стиль проектирования программных интерфейсов.
Такой API:
• работает с ресурсами
• использует HTTP-методы по смыслу
• адресует ресурсы через URL
• возвращает данные в удобном для клиента формате, чаще всего JSON
• использует HTTP-статусы для описания результата операции
Пример:
GET /api/v1/products
GET /api/v1/products/{productId}
POST /api/v1/products
PATCH /api/v1/products/{productId}
DELETE /api/v1/products/{productId}
5️⃣ RESTful API — это термин, который подчеркивает строгое следование принципам REST.
То есть, когда мы говорим, что API является "RESTful", мы хотим сказать, что он полностью соответствует архитектурным стилям и ограничениям, определенным в REST.
Это подразумевает, что API не только использует HTTP-методы и работает через URL, но и строго следует всем рекомендациям и лучшим практикам REST.
👉 По сути
HTTP — это протокол передачи данных.
REST — архитектурный стиль.
REST API — API, сделанный по принципам REST.
RESTful API — API, который подчёркнуто следует REST-подходу.
👉 В повседневной разработке эти различия зачастую стираются, и термины используются как синонимы.
Но на собеседовании лучше показать, что вы понимаете разницу:
🔹 не любой HTTP API является REST API,
🔹 но REST API обычно использует HTTP.
Желаю вам успешных технических собеседований 😉
#RestApiGA