← Назад к вопросам
У каких методов HTTP-запроса нет Body
1.0 Junior🔥 131 комментариев
#API и сетевые протоколы
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
HTTP методы без Body
В HTTP спецификации (RFC 7231) существуют методы, которые не должны содержать тело запроса (body).
Методы БЕЗ Body
Основные методы без тела:
- GET — получение данных
- Нет body в запросе
- Данные передаются в URL (query parameters)
GET /users?page=1&limit=10 HTTP/1.1
- HEAD — как GET, но без body в ответе
- Нет body в запросе
- Сервер не отправляет body в ответе
- DELETE — удаление ресурса
- Технически может содержать body, но обычно не используется
- Данные передаются через URL или query params
- CONNECT — установка туннеля (редко)
- Нет body в запросе
- Используется для HTTPS туннелей через прокси
- TRACE — диагностика (запрещена в современных браузерах)
- Нет body в запросе
Методы С Body
Методы, которые могут/должны содержать body:
- POST — создание нового ресурса
- PUT — полное обновление ресурса
- PATCH — частичное обновление ресурса
- OPTIONS — информация о доступных методах
Практический пример в Node.js
const express = require('express');
const app = express();
// GET — должен быть без body
app.get('/users', (req, res) => {
const page = req.query.page;
res.json({ users: [] });
});
// HEAD — как GET, но без body в ответе
app.head('/users/:id', (req, res) => {
res.set('X-Resource-Exists', 'true');
res.end();
});
// DELETE — может быть без body
app.delete('/users/:id', (req, res) => {
const id = req.params.id;
res.json({ deleted: true });
});
// POST — ДОЛЖЕН быть с body
app.post('/users', express.json(), (req, res) => {
const { name, email } = req.body;
res.json({ id: 1, name, email });
});
// PUT — ДОЛЖЕН быть с body
app.put('/users/:id', express.json(), (req, res) => {
const { name, email } = req.body;
res.json({ id: req.params.id, name, email });
});
// PATCH — МОЖЕТ быть с body
app.patch('/users/:id', express.json(), (req, res) => {
const updates = req.body;
res.json({ id: req.params.id, ...updates });
});
Важные моменты
1. GET с body — плохая практика
Браузеры могут игнорировать body. Используй query params:
// Неправильно
fetch('/api/users', {
method: 'GET',
body: JSON.stringify({ search: 'john' })
});
// Правильно
fetch('/api/users?search=john');
2. DELETE может иметь body, но это редко
Стандартно используется без body:
DELETE /resources/123 HTTP/1.1
Таблица методов
| Метод | Body запрос | Body ответ | Идемпотентный | Кэшируемый |
|---|---|---|---|---|
| GET | Нет | Да | Да | Да |
| HEAD | Нет | Нет | Да | Да |
| POST | Да | Да | Нет | Нет |
| PUT | Да | Да | Да | Нет |
| PATCH | Да | Да | Нет | Нет |
| DELETE | Нет | Да | Да | Нет |
| OPTIONS | Нет | Да | Да | Нет |
Key takeaway: Следуй спецификации HTTP — это делает API предсказуемым и совместимым с инструментами (кэши, прокси, браузеры).