PurpleSchool — курсы программирования онлайн
  • Пути
    • Frontend React разработчик
    • Frontend Vue разработчик
    • Backend разработчик Node.js
    • Fullstack разработчик React / Node.js
    • Mobile разработчик React Native
    • Backend разработчик Golang
    • Devops инженер
    • Backend разработчик Python
  • Подписка
  • AI для кодаНовое
  • О нас
    • Отзывы
    • Реферальная программа
    • О компании
    • Контакты
  • Иконка открытия меню
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
PurpleSchool — платформа бесплатных roadmap и курсов для разработчиков
ютуб иконка
Telegram иконка
VK иконка
VK иконка
Курсы
ГлавнаяКаталог курсовFrontendBackendFullstack
Практика
КарьераПроектыPurpleПлюсPurpleMax
Материалы
БлогБаза знаний
Документы
Договор офертаПолитика конфиденциальностиПроверка сертификатаМиграция курсовРеферальная программа
Реквизиты
ИП Ларичев Антон АндреевичИНН 773373765379contact@purpleschool.ru

PurpleSchool © 2020 -2026 Все права защищены

  • Курсы
    • FrontendИконка стрелки
    • AI разработкаИконка стрелки
    • BackendИконка стрелки
    • DevOpsИконка стрелки
    • MobileИконка стрелки
    • ТестированиеИконка стрелки
    • Soft-skillsИконка стрелки
    • ДизайнИконка стрелки
    Иконка слояПерейти в каталог курсов
  • Бесплатно
    • Курсы
    • JavaScript Основы разработкиPython Основы PythonCSS CSS FlexboxКарта развитияВопросы для собеседований
    • База знанийИконка стрелки
    • Новостные рассылкиИконка стрелки
  • PurpleSchool — курсы программирования онлайн
    • Подписка
    • AI для кодаНовое
    • Сообщество
    Главная
    Сообщество
    Что такое REST API и как его правильно проектировать

    Что такое REST API и как его правильно проектировать

    Аватар автора Что такое REST API и как его правильно проектировать

    Антон Ларичев

    Иконка календаря22 июня 2026
    REST APIHTTPbackendпроектирование APIвеб-разработкаjuniorИконка уровня junior
    Картинка поста Что такое REST API и как его правильно проектировать

    Введение

    REST API — один из самых распространённых способов организации взаимодействия между клиентом и сервером. Большинство современных веб-приложений и мобильных клиентов общаются с бэкендом именно через REST. Чтобы грамотно проектировать такие интерфейсы, нужно понять базовые принципы архитектурного стиля REST и научиться применять их на практике.

    Что такое REST

    REST расшифровывается как Representational State Transfer — передача состояния представления. Это не протокол и не стандарт, а набор архитектурных ограничений, сформулированных Роем Филдингом в 2000 году. API, которое следует этим ограничениям, называют RESTful.

    Ключевые принципы REST:

    • Клиент-серверная архитектура — клиент и сервер независимы и общаются через стандартный интерфейс.
    • Отсутствие состояния (stateless) — каждый запрос содержит всю информацию для его обработки. Сервер не хранит контекст между запросами.
    • Кэшируемость — ответы сервера должны явно указывать, можно ли их кэшировать.
    • Единообразие интерфейса — ресурсы идентифицируются через URI, взаимодействие происходит через стандартные HTTP-методы.
    • Многоуровневая система — между клиентом и сервером могут быть промежуточные узлы: прокси, балансировщики.

    HTTP-методы и их назначение

    REST использует стандартные методы HTTP для описания действий над ресурсами:

    МетодНазначениеИдемпотентность
    GETПолучить ресурсДа
    POSTСоздать ресурсНет
    PUTПолностью заменить ресурсДа
    PATCHЧастично обновить ресурсНет
    DELETEУдалить ресурсДа

    Пример запросов для работы с пользователями:

    # Получить список всех пользователей
    GET /users
    
    # Получить конкретного пользователя
    GET /users/42
    
    # Создать нового пользователя
    POST /users
    Content-Type: application/json
    
    {
      "name": "Иван Петров",
      "email": "ivan@example.com"
    }
    
    # Частично обновить данные пользователя
    PATCH /users/42
    Content-Type: application/json
    
    {
      "email": "ivan.new@example.com"
    }
    
    # Удалить пользователя
    DELETE /users/42

    Правильное проектирование URL-маршрутов

    Одна из самых важных частей REST — правильное именование ресурсов.

    Используйте существительные во множественном числе:

    # Правильно
    GET /articles
    GET /articles/5
    
    # Неправильно — глаголы в URL
    GET /getArticles
    POST /createArticle

    Вложенные ресурсы отражают иерархию:

    # Все комментарии конкретной статьи
    GET /articles/5/comments
    
    # Конкретный комментарий статьи
    GET /articles/5/comments/12

    Фильтрация, сортировка и пагинация — через query-параметры:

    # Фильтрация по категории
    GET /articles?category=javascript
    
    # Сортировка с пагинацией
    GET /articles?sort=createdAt&order=desc&page=2&limit=10

    Коды HTTP-ответов

    Правильное использование статус-кодов — признак хорошо спроектированного API:

    # Успешные ответы
    200 OK                   — стандартный успех
    201 Created              — ресурс создан (ответ на POST)
    204 No Content           — успех без тела ответа (ответ на DELETE)
    
    # Ошибки клиента
    400 Bad Request          — некорректный запрос
    401 Unauthorized         — не авторизован
    403 Forbidden            — доступ запрещён
    404 Not Found            — ресурс не найден
    422 Unprocessable Entity — ошибка валидации данных
    
    # Ошибки сервера
    500 Internal Server Error — внутренняя ошибка сервера
    503 Service Unavailable   — сервис временно недоступен

    Пример обработки ошибок на Node.js с Express:

    app.get('/articles/:id', async (req, res) => {
      const article = await Article.findById(req.params.id);
    
      // Возвращаем 404, если статья не найдена
      if (!article) {
        return res.status(404).json({
          error: 'Статья не найдена',
          code: 'ARTICLE_NOT_FOUND'
        });
      }
    
      res.status(200).json({ data: article });
    });

    Формат ответов и версионирование

    Единообразный формат ответов упрощает работу клиентов с API:

    {
      "data": {
        "id": 42,
        "name": "Иван Петров",
        "email": "ivan@example.com"
      },
      "meta": {
        "requestId": "abc-123"
      }
    }

    Для списков с пагинацией:

    {
      "data": [],
      "pagination": {
        "page": 1,
        "limit": 10,
        "total": 245,
        "pages": 25
      }
    }

    Версионирование позволяет вносить изменения без поломки существующих клиентов. Самый распространённый подход — версия в URL:

    /api/v1/users
    /api/v2/users

    Альтернатива — версия в заголовке запроса:

    Accept: application/vnd.api+json;version=2

    Частые ошибки

    Глаголы в URL вместо существительных

    REST строится вокруг ресурсов, а не действий — для действий есть HTTP-методы.

    # Плохо
    POST /createUser
    POST /deleteUser/42
    GET  /getUserById?id=42
    
    # Хорошо
    POST   /users
    DELETE /users/42
    GET    /users/42

    Игнорирование HTTP-кодов

    Возвращать 200 OK с {"error": "not found"} в теле — антипаттерн. Клиенты ориентируются на статус-код, а не только на тело ответа.

    Отсутствие пагинации

    Возвращать тысячи записей одним запросом — проблема производительности. Всегда добавляйте пагинацию для коллекций ресурсов.

    Несогласованное именование полей

    Выбирайте одну конвенцию и придерживайтесь её во всём API:

    // Плохо — смешение стилей
    { "userId": 1, "user_name": "Иван", "UserEmail": "ivan@example.com" }
    
    // Хорошо — единый camelCase
    { "userId": 1, "userName": "Иван", "userEmail": "ivan@example.com" }

    Хранение состояния на сервере

    REST требует stateless-архитектуры. Не храните данные о сессии в памяти сервера — используйте JWT или другие механизмы передачи состояния через запрос.

    Заключение

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

    Иконка глаза538

    Комментарии

    0
    Бесплатный курс

    Учитесь программировать с AI-агентом — бесплатно

    Курс «AI в обучении: OpenCode и skills»: поставите агента и разберёте с ним любую тему — как эту статью.

    opencode

    >объясни этот код и дай задачу

    ◆Читаю src/server.ts…

    ✓Разбор готов: 4 шага

    ✓Задача → practice/01.md

    • Установка и настройка OpenCode
    • Агент и skills на практике
    • 13 уроков, 3 модуля
    Начать бесплатно

    0 ₽ · доступ сразу после регистрации

    Бесплатные лекции

    Лучшие курсы по теме

    изображение курса

    Продвинутый JavaScript

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    TypeScript с нуля

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    Neovim

    Антон Ларичев
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее

    Похожие статьи

    Картинка поста Как установить Claude на компьютер в России
    Иконка аватараАнтон
    Иконка календаря04 ноября 2026
    AnthropicAI-инструментыClaude CodejuniorИконка уровня junior

    Как установить Claude на компьютер в России

    Как установить Claude Desktop и Claude Code на Windows, macOS и Linux из России: где скачать, почему приложение не работает и как подключиться без VPN.

    Иконка чипа0
    Иконка глаза11
    Иконка комментариев0
    Картинка поста Soft skills для IT-специалиста: зачем они и как развивать
    Иконка аватараАнтон
    Иконка календаря04 ноября 2026
    soft skillsкоммуникациякод-ревью+ 1middleИконка уровня middle

    Soft skills для IT-специалиста: зачем они и как развивать

    Soft skills для IT-специалиста: коммуникация, фидбек и работа в команде — навыки, которые ускоряют карьеру не меньше, чем технический стек.

    Иконка чипа0
    Иконка глаза13
    Иконка комментариев0
    Картинка поста Claude Code бесплатно: как получить 500 000 токенов на 7 дней
    Иконка аватараАнтон
    Иконка календаря03 ноября 2026
    Claude CodeAnthropicAI-инструментыjuniorИконка уровня junior

    Claude Code бесплатно: как получить 500 000 токенов на 7 дней

    Как попробовать Claude Code бесплатно из России: 500 000 токенов на 7 дней без карты и VPN. Условия пробы, подключение, модели и что будет после неё.

    Иконка чипа0
    Иконка глаза196
    Иконка комментариев0
    Иконка чипа0