HTTP методы (GET, POST, PUT, DELETE)
Тема дорожной карты · Backend разработчик
HTTP-методы (также называемые HTTP-глаголами) — стандартизированные действия, определяющие намерение HTTP-запроса, составляющие основу проектирования REST API и определяющие, как серверы обрабатывают и отвечают на клиентские операции. GET извлекает ресурс и должен быть безопасным и идемпотентным (без побочных эффектов, повторные вызовы возвращают тот же результат); POST отправляет данные для создания нового ресурса или инициирования серверного действия — ни безопасный, ни идемпотентный; PUT идемпотентно заменяет целый ресурс по известному URL; PATCH применяет частичное обновление к существующему ресурсу; DELETE идемпотентно удаляет ресурс; OPTIONS используется браузерами для отправки CORS preflight-запросов с целью выяснить, какие HTTP-методы и заголовки разрешает сервер. Проектирование REST API отображает HTTP-методы на CRUD-операции: GET /users перечисляет пользователей, GET /users/42 возвращает одного, POST /users создаёт нового, PUT /users/42 полностью заменяет его, PATCH /users/42 обновляет конкретные поля, а DELETE /users/42 удаляет его — соглашение, закреплённое спецификациями OpenAPI 3.x и проверяемое инструментами вроде spectral. Бэкенд-фреймворки декларативно маршрутизируют HTTP-методы на обработчики: app.get(), app.post(), app.patch() в Express.js; @GetMapping, @PostMapping в Spring Boot; @app.route(methods=['GET', 'POST']) в Flask. HTTP-методы взаимодействуют с кешированием: только ответы GET и HEAD кешируются по умолчанию; ответы POST, PUT, PATCH и DELETE инвалидируют кешированные представления. Понимание семантики HTTP-методов фундаментально для проектирования API, потребляемых REST-клиентами, GraphQL-клиентами поверх HTTP, gRPC-Web и автоматизированными инструментами тестирования API вроде curl, HTTPie или Postman.
Как это работает
HTTP методы (GET, POST, PUT, DELETE) — request/response протокол поверх TCP (или QUIC для HTTP/3). Запрос имеет метод (GET, POST, PUT, DELETE, PATCH), URL, заголовки, опциональное тело; ответ — статус-код (2xx success, 3xx redirect, 4xx client, 5xx server), заголовки, тело. HTTP/1.1 — одно TCP-соединение на запрос (с keep-alive переиспользованием); HTTP/2 мультиплексирует много запросов в одно соединение; HTTP/3 — поверх UDP через QUIC. TLS (HTTPS) обязателен в 2026.
Когда применять
HTTP/REST — для большинства публичных API: lingua franca, поддерживается клиентами, тулинг для отладки повсюду. gRPC — для internal service-to-service, когда важны latency + schema-дисциплина. WebSockets — для двунаправленного realtime. SSE (Server-Sent Events) — для server-push-only. Всегда за reverse proxy (Caddy, nginx, traefik), который держит TLS, сжатие, rate limit.
Типичные ошибки
Ловушки HTTP методы (GET, POST, PUT, DELETE): 200 OK с {"error": "..."} вместо нормальной 4xx/5xx (ломает client retry и observability); игнор Idempotency-Key для POST, создающего ресурсы (retry дублируют); session-токены в URL (логируются везде); нет gzip/brotli (медленные клиенты на плохих сетях); Server: header выдаёт версию стека. Прочтите RFC 9110 (HTTP semantics) один раз.
Связанные понятия
Полезные ресурсы
Проверить знания (1)
Загрузка вопросов…