webroad.online
  1. 1Веб
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Инструменты
  8. 8React
  9. 9Стейт-менеджмент
  10. 10Next.js
  11. 11Формы
  12. 12Данные и бэкенд
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Анимации
  16. 16Тестирование
  17. 17Архитектура
Веб · Урок 2 из 7

HTTP: методы, статусы, заголовки

Язык браузера и сервера, HTTP-кэширование и что значит «идемпотентный».

Обновлено

Что такое HTTP

HTTP — язык, на котором общаются браузер и сервер. HTTP-сообщение — это текст из трёх частей: стартовая строка, заголовки (метаданные) и, при необходимости, тело (содержимое).

GET /api/posts?page=2 HTTP/1.1          ← метод + путь
Host: learn-js.vercel.app               ← заголовки
Accept: application/json
Cookie: vid=9e88...

HTTP/1.1 200 OK                         ← статус
Content-Type: application/json
Cache-Control: max-age=60

[{"id":1,"title":"Привет"}]             ← тело

HTTP не хранит состояние (stateless) — каждый запрос независим, сервер ничего «не помнит» между ними. Поэтому существуют cookie.

Методы

Метод Роль Есть тело Идемпотентный
GET чтение нет да
POST создание / действие да нет
PUT полная замена да да
PATCH частичное изменение да обычно нет
DELETE удаление редко да

Идемпотентность — если повторить запрос 5 раз, результат будет таким же, как после одного. GET никогда не должен менять данные — браузеры и поисковые роботы могут повторять его в любой момент.

Коды статуса

Класс Значение Самые частые
2xx успех 200 OK, 201 Created, 204 No Content
3xx перенаправление 301 постоянное, 302/307 временное, 304 Not Modified
4xx ошибка клиента 400 неверные данные, 401 не аутентифицирован, 403 запрещено, 404 не найдено, 429 слишком много запросов
5xx ошибка сервера 500 внутренняя ошибка, 502/503 сервис недоступен

401 и 403: 401 = «я не знаю, кто вы», 403 = «я знаю, кто вы, но вам нельзя».

Важные заголовки

Заголовок Направление Роль
Content-Type оба формат тела: application/json, text/html
Authorization запрос токен доступа
Cookie / Set-Cookie запрос / ответ cookie
Cache-Control ответ сколько можно хранить в кэше
Location ответ куда ведёт 3xx-редирект

HTTP-кэширование

Cache-Control сообщает браузеру и CDN, сколько можно повторно использовать ответ, не запрашивая его снова:

Значение Эффект
max-age=3600 свежий 1 час
no-cache можно хранить, но перед использованием проверить на сервере
no-store не хранить вообще (чувствительные данные)
public / private может хранить CDN / только браузер
stale-while-revalidate=60 отдать устаревшую версию, обновить в фоне

Последнее — ровно та идея, что стоит за revalidateTag(tag, 'max') в Next.

HTTP/1.1, HTTP/2, HTTP/3

Та же семантика (методы, статусы, заголовки), более эффективный транспорт: HTTP/2 передаёт много файлов по одному соединению; HTTP/3 работает поверх QUIC (лучше в мобильных сетях). Для фронтенд-разработчика код остаётся прежним.

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

  • Менять данные через GET (ссылки вида /delete?id=5).
  • Возвращать 200 с { error: '...' } вместо правильного статуса.
  • Кэшировать приватные ответы (public для данных пользователя).

Коротко

  • Запрос = метод + URL + заголовки + тело; ответ = статус + заголовки + тело.
  • GET читает, POST создаёт, PUT/PATCH изменяют, DELETE удаляет.
  • 4xx — вина клиента, 5xx — вина сервера.
  • Cache-Control решает, сколько ответ живёт в кэше.

Официальные источники

Упражнения

Была ли страница полезной?

Один клик — без регистрации.