Sobes.tech
Назад к вопросам
Junior — Middle
66

Можешь пояснить основные принципы архитектуры REST и как они реализуются при разработке API?

Компании, где спрашивали
Open Solutions

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

REST — это стиль построения API вокруг ресурсов, а не действий. Важно показать понимание HTTP-методов, статусов, адресации через URI и stateless-взаимодействия. Также обычно ждут, что будет упомянуты единообразие интерфейса, возможность кэширования и работа с представлениями данных.

Определение:

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

Пример использования:

Например, для сервиса управления пользователями REST API может выглядеть так:

  • GET /users — получить список пользователей
  • GET /users/42 — получить конкретного пользователя
  • POST /users — создать пользователя
  • PUT /users/42 — обновить пользователя
  • DELETE /users/42 — удалить пользователя
GET /users/42 HTTP/1.1
Host: api.example.com
Accept: application/json

Ответ:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 42,
  "name": "Ivan Petrov",
  "email": "ivan@example.com"
}

Пояснение кода:

Код здесь не требуется, потому что REST — это прежде всего принцип проектирования API, а не конкретный язык программирования.
В примере:

  1. Клиент обращается к ресурсу /users/42.
  2. Используется метод GET, значит операция только читает данные.
  3. Сервер возвращает 200 OK, если ресурс найден.
  4. Данные приходят в формате JSON как представление ресурса.
  5. Сам API не хранит состояние сессии между запросами — каждый запрос содержит все нужное для обработки.

Ключевые моменты:

  • REST строится вокруг ресурсов, а не вокруг RPC-методов или бизнес-действий.
  • Используются стандартные HTTP-методы: GET, POST, PUT, PATCH, DELETE.
  • Каждый запрос должен быть stateless: сервер не полагается на данные предыдущих запросов.
  • URI должны быть понятными и отражать сущности: /users, /orders/15, а не /getUserData.
  • Важна корректная работа HTTP-статусов: 200, 201, 400, 401, 404, 500.
  • API обычно возвращает представление ресурса в JSON или другом формате, а не сам объект в памяти.