Что такое REST API
Разбор вопроса «Что такое REST API» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
Вопрос
Что такое REST API
Профессия
Frontend Developer
Что хочет услышать интервьюер
Интервьюер ожидает четкого понимания концепции REST API, умения объяснить основные принципы (HTTP-методы, stateless, использование JSON) и привести примеры его применения в реальных проектах.
Ключевые тезисы
- REST (Representational State Transfer) — архитектурный стиль для создания веб-сервисов, основанный на принципах HTTP.
- REST API использует стандартные HTTP-методы (GET, POST, PUT, DELETE) для выполнения операций с ресурсами.
- Ресурсы в REST API идентифицируются через URL, а данные передаются в формате JSON или XML.
- REST API является stateless — каждый запрос содержит всю необходимую информацию для его обработки.
- Примеры использования: взаимодействие клиента (например, фронтенда) с сервером для получения или изменения данных.
Подробный ответ
REST (Representational State Transfer) — это архитектурный стиль для проектирования веб-API. REST API использует стандартные HTTP-методы для работы с ресурсами, представленными в виде URL.
Принципы REST
1. Клиент-серверная архитектура
Клиент и сервер разделены — они развиваются и масштабируются независимо.
2. Stateless (без состояния)
Каждый запрос содержит всю информацию, необходимую для его обработки. Сервер не хранит контекст между запросами.
3. Единообразие интерфейса
Ресурсы идентифицируются по URL, а операции выполняются через стандартные HTTP-методы.
4. Кэширование
Ответы сервера могут быть кэшированы для повышения производительности.
Проектирование REST API
| Операция | Метод | URL | Описание |
|---|---|---|---|
| Список | GET | /users | Получить всех пользователей |
| Один ресурс | GET | /users/1 | Получить пользователя с ID 1 |
| Создание | POST | /users | Создать нового пользователя |
| Обновление | PUT | /users/1 | Полностью обновить пользователя |
| Частичное обновление | PATCH | /users/1 | Обновить отдельные поля |
| Удаление | DELETE | /users/1 | Удалить пользователя |
Коды ответов в REST API
200— успешный запрос201— ресурс создан204— успех, тело ответа пустое400— некорректный запрос404— ресурс не найден422— ошибка валидации
> REST vs GraphQL: REST возвращает фиксированную структуру данных, а GraphQL позволяет клиенту запрашивать только нужные поля.
Практические примеры
Пример 1
CRUD-операции с пользователями
javascript
// GET — получить список
const users = await fetch('/api/users').then(r => r.json());
// POST — создать
const newUser = await fetch('/api/users', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Alice' })
}).then(r => r.json());
// PUT — обновить
await fetch('/api/users/1', {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Bob' })
});
// DELETE — удалить
await fetch('/api/users/1', { method: 'DELETE' });Каждый HTTP-метод соответствует одной CRUD-операции.
Пример 2
Правильная структура URL
✅ Правильно:
GET /users — все пользователи
GET /users/1 — пользователь #1
GET /users/1/posts — посты пользователя #1
POST /users — создать пользователя
❌ Неправильно:
GET /getUsers
GET /user?id=1
POST /createUser
DELETE /deleteUser?id=1В REST URL — это существительное (ресурс), а HTTP-метод — глагол (действие).
Пример 3
Пагинация и фильтрация
GET /users?page=2&limit=20
GET /users?sort=name&order=asc
GET /users?role=admin&active=trueПараметры запроса используются для фильтрации, сортировки и пагинации, не меняя структуру URL.
Частые ошибки
- Ошибка #1: Использование неправильного HTTP-метода. Например, использование GET вместо POST для создания ресурса.
- Ошибка #2: Неправильная структура URL. Например, использование
/users?id=1вместо/users/1для получения конкретного пользователя. - Ошибка #3: Игнорирование принципа stateless. Например, попытка сохранить состояние клиента на сервере между запросами.
Связанные темы
- GraphQL — альтернативный подход к созданию API, который позволяет клиентам запрашивать только необходимые данные.
- HTTP-методы — основные методы протокола HTTP, используемые в REST API.
- JSON — формат данных, широко используемый в REST API для передачи информации между клиентом и сервером.
- Stateless — принцип, при котором каждый запрос содержит всю необходимую информацию для его обработки.
Follow-up вопросы
Какие HTTP-методы используются в REST API и для чего?
Уровень: basic
Основные методы: GET — для получения данных, POST — для создания нового ресурса, PUT — для полного обновления ресурса, DELETE — для удаления ресурса. Также есть PATCH — для частичного обновления.
Что означает stateless в контексте REST API?
Уровень: intermediate
Stateless означает, что каждый запрос к серверу содержит всю необходимую информацию для его обработки. Сервер не хранит состояние клиента между запросами.
Как REST API отличается от других типов API, например, GraphQL?
Уровень: advanced
REST API использует стандартные HTTP-методы и URL для работы с ресурсами, а GraphQL позволяет клиенту запрашивать только нужные данные через единую точку входа и язык запросов. REST обычно возвращает фиксированные структуры данных.
Какие преимущества REST API?
Уровень: intermediate
Простота реализации и использования, кэширование данных, масштабируемость, независимость от клиента и языка программирования, поддержка большинством веб-технологий.
Что такое ресурс в REST API и как он идентифицируется?
Уровень: basic
Ресурс — это объект или данные, которыми можно манипулировать через API. Он идентифицируется через уникальный URL, например, /users/1 для доступа к пользователю с ID 1.
Что такое CORS 😎
CORS это браузерный механизм, который разрешает или запрещает JavaScript читать ответы с другого origin. Разбираем origin, preflight, заголовки и типичные ошибки настройки API.
Что такое HTTP
Разбор вопроса «Что такое HTTP» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.