Gernar
HTTP, API и сеть

Что такое 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.

Содержание