GET
GET — HTTP-метод для чтения ресурса. Idempotent (можно повторять — результат тот же), safe (не меняет состояние на сервере), кешируется по умолчанию.
Пример
GET /users/42?format=json HTTP/1.1
Host: api.example.com
Accept: application/json
Authorization: Bearer abc123
# ответ
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: max-age=300
{"id":42,"name":"Vasya"}
Параметры
Всё в URL: ?key=value&other=1. Ограничение обычно ~2048-8192 байт (браузер/сервер), реально безопасно ~2000.
Что НЕ отправлять через GET
- Пароли, токены (попадут в access logs, referer, историю)
- Большие данные (лимит URL, кеш засоряется)
- Действия меняющие состояние ("GET /delete/42" — классическая ошибка, prefetcher/бот сработает)
Кеширование
По умолчанию GET кешируется браузерами, CDN, промежуточными прокси. Управление через:
Cache-Control: no-store— не кешироватьCache-Control: private, max-age=60— только браузер, 60 секCache-Control: public, max-age=3600— все могут- ETag для валидации
Условный GET
GET /users/42
If-None-Match: "v3"
If-Modified-Since: Mon, 15 Jul 2026 12:00:00 GMT
# сервер:
HTTP/1.1 304 Not Modified ← без тела, юзаем кеш
Range requests
GET /video.mp4
Range: bytes=1000000-1999999
HTTP/1.1 206 Partial Content
Content-Range: bytes 1000000-1999999/50000000
Основа стриминга, докачки, HTTP-based видеоплееров.
GET vs POST для чтения
Если ответ большой или параметры длинные — некоторые API используют POST для чтения (типа GraphQL queries). Технически не по стандарту, но работает.