\n```\n\n#### Когда использовать\n\n- Полное обновление профиля пользователя\n- Замена всего содержимого документа\n- Обновление всех полей ресурса\n- Операции, которые требуют полной замены данных\n\n### GET vs PUT: Детальное сравнение\n\n| Параметр | GET | PUT |\n|----------|-----|-----|\n| **Назначение** | Получить данные | Заменить ресурс |\n| **Изменяет данные** | Нет | Да |\n| **Тело запроса** | Нет | Обязательно |\n| **Кэширование** | Да | Нет |\n| **Безопасность** | Низкая (видны в URL) | Выше (в теле) |\n| **Идемпотентность** | Да | Да |\n| **История браузера** | Сохраняется | Не сохраняется |\n| **Может иметь side effects** | Нет | Нет (идемпотентен) |\n\n### Важный нюанс: PUT vs PATCH\n\nЧасто путают PUT и PATCH. Вот разница:\n\n```javascript\n// PUT — полное обновление (замена всех полей)\nfetch('/api/users/123', {\n method: 'PUT',\n body: JSON.stringify({\n name: 'John',\n email: 'john@example.com',\n age: 30,\n // Все поля должны быть здесь!\n })\n});\n\n// PATCH — частичное обновление (только изменённые поля)\nfetch('/api/users/123', {\n method: 'PATCH',\n body: JSON.stringify({\n email: 'newemail@example.com',\n // Остальные поля не меняются\n })\n});\n```\n\n### Практический пример: Редактирование профиля\n\n```javascript\n// Получить текущие данные пользователя (GET)\nfetch('/api/users/123')\n .then(res => res.json())\n .then(user => {\n // Пользователь заполняет форму, меняет email\n user.email = 'newemail@example.com';\n \n // Отправить ВСЕ данные обратно (PUT)\n return fetch('/api/users/123', {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(user)\n });\n })\n .then(res => res.json())\n .then(updated => console.log('Profile updated:', updated));\n```\n\n### REST API Best Practices\n\n```javascript\n// ============ ПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ ============\n\n// GET — только для чтения\nGET /api/users // Получить всех пользователей\nGET /api/users/123 // Получить пользователя с ID 123\nGET /api/users?role=admin // Получить администраторов\n\n// POST — создание нового ресурса\nPOST /api/users // Создать нового пользователя\n\n// PUT — полное обновление существующего ресурса\nPUT /api/users/123 // Полностью заменить пользователя с ID 123\n\n// PATCH — частичное обновление\nPATCH /api/users/123 // Обновить только некоторые поля\n\n// DELETE — удаление ресурса\nDELETE /api/users/123 // Удалить пользователя\n```\n\n### Вывод\n\n- **GET** — для получения данных, безопасен, идемпотентен\n- **PUT** — для полной замены ресурса, содержит полные данные\n- **GET** передаёт параметры в URL, **PUT** в теле запроса\n- **GET** кэшируется, **PUT** обычно нет\n- **PUT** требует отправки ВСЕ полей, для частичных обновлений используйте **PATCH**","dateCreated":"2026-04-02T22:05:57.900475","upvoteCount":0,"author":{"@type":"Person","name":"claude-haiku-4.5"}}}}
← Назад к вопросам

В чем разница между запросами GET и PUT?

1.7 Middle🔥 181 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разница между запросами GET и PUT

GET и PUT — это два разных HTTP-методов с совершенно разными назначениями. Если GET предназначен для получения данных, то PUT — для изменения существующих ресурсов.

GET запрос

GET — это HTTP-метод для получения данных с сервера. Он безопасный и идемпотентный.

Характеристики

  • Назначение: Получить данные (не изменять)
  • Тело запроса: Нет (пусто)
  • Параметры: Передаются в URL (query string)
  • Кэширование: Браузер кэширует по умолчанию
  • История браузера: Сохраняется
  • Безопасность: Данные видны в URL (не использовать для чувствительных данных)
  • Идемпотентность: Да (несколько одинаковых запросов дают один результат)

Примеры

// GET запрос в JavaScript
fetch('/api/users/123')
  .then(res => res.json())
  .then(data => console.log(data));

// URL с параметрами
fetch('/api/users?page=1&limit=10&sort=name')
  .then(res => res.json())
  .then(data => console.log(data));
<!-- GET запрос в HTML форме -->
<form method="GET" action="/search">
  <input type="text" name="q" placeholder="Search">
  <button type="submit">Search</button>
</form>
<!-- Отправит: /search?q=javascript -->

Когда использовать

  • Получение списка пользователей
  • Получение профиля пользователя
  • Поиск по параметрам
  • Фильтрация данных
  • Любые операции чтения (read-only)

PUT запрос

PUT — это HTTP-метод для полного обновления существующего ресурса. Он заменяет весь ресурс на сервере.

Характеристики

  • Назначение: Полностью заменить ресурс
  • Тело запроса: Обязательно (JSON, XML, форма)
  • Параметры: В теле запроса
  • Кэширование: Обычно не кэшируется
  • История браузера: Не сохраняется
  • Безопасность: Данные в теле запроса (безопаснее, чем URL)
  • Идемпотентность: Да (несколько одинаковых PUT запросов дают одинаковый результат)

Примеры

// PUT запрос для полного обновления пользователя
fetch('/api/users/123', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'John Doe',
    email: 'john@example.com',
    age: 30,
    phone: '+1234567890',
  })
})
.then(res => res.json())
.then(data => console.log('Updated:', data));
<!-- PUT запрос в HTML форме (нужен JavaScript) -->
<form id="userForm">
  <input type="text" name="name" value="John">
  <input type="email" name="email" value="john@example.com">
  <button type="submit">Update</button>
</form>

<script>
  document.getElementById('userForm').addEventListener('submit', (e) => {
    e.preventDefault();
    
    const formData = new FormData(e.target);
    const data = Object.fromEntries(formData);
    
    fetch('/api/users/123', {
      method: 'PUT',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(data)
    });
  });
</script>

Когда использовать

  • Полное обновление профиля пользователя
  • Замена всего содержимого документа
  • Обновление всех полей ресурса
  • Операции, которые требуют полной замены данных

GET vs PUT: Детальное сравнение

ПараметрGETPUT
НазначениеПолучить данныеЗаменить ресурс
Изменяет данныеНетДа
Тело запросаНетОбязательно
КэшированиеДаНет
БезопасностьНизкая (видны в URL)Выше (в теле)
ИдемпотентностьДаДа
История браузераСохраняетсяНе сохраняется
Может иметь side effectsНетНет (идемпотентен)

Важный нюанс: PUT vs PATCH

Часто путают PUT и PATCH. Вот разница:

// PUT — полное обновление (замена всех полей)
fetch('/api/users/123', {
  method: 'PUT',
  body: JSON.stringify({
    name: 'John',
    email: 'john@example.com',
    age: 30,
    // Все поля должны быть здесь!
  })
});

// PATCH — частичное обновление (только изменённые поля)
fetch('/api/users/123', {
  method: 'PATCH',
  body: JSON.stringify({
    email: 'newemail@example.com',
    // Остальные поля не меняются
  })
});

Практический пример: Редактирование профиля

// Получить текущие данные пользователя (GET)
fetch('/api/users/123')
  .then(res => res.json())
  .then(user => {
    // Пользователь заполняет форму, меняет email
    user.email = 'newemail@example.com';
    
    // Отправить ВСЕ данные обратно (PUT)
    return fetch('/api/users/123', {
      method: 'PUT',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(user)
    });
  })
  .then(res => res.json())
  .then(updated => console.log('Profile updated:', updated));

REST API Best Practices

// ============ ПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ ============

// GET — только для чтения
GET /api/users           // Получить всех пользователей
GET /api/users/123       // Получить пользователя с ID 123
GET /api/users?role=admin // Получить администраторов

// POST — создание нового ресурса
POST /api/users          // Создать нового пользователя

// PUT — полное обновление существующего ресурса
PUT /api/users/123       // Полностью заменить пользователя с ID 123

// PATCH — частичное обновление
PATCH /api/users/123     // Обновить только некоторые поля

// DELETE — удаление ресурса
DELETE /api/users/123    // Удалить пользователя

Вывод

  • GET — для получения данных, безопасен, идемпотентен
  • PUT — для полной замены ресурса, содержит полные данные
  • GET передаёт параметры в URL, PUT в теле запроса
  • GET кэшируется, PUT обычно нет
  • PUT требует отправки ВСЕ полей, для частичных обновлений используйте PATCH
В чем разница между запросами GET и PUT? | PrepBro