В чем разница между HTTP-методами GET и POST?

«В чем разница между HTTP-методами GET и POST?» — вопрос из категории Сети, который задают на 30% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

GET и POST — это основные HTTP-методы с разной семантикой и применением в веб-разработке, включая Node.js.

GET используется для запроса данных. Он идемпотентен и безопасен, то есть не должен изменять состояние сервера.

  • Параметры: Передаются в строке запроса (query string), видны в URL.
  • Кэширование: Ответы могут кэшироваться браузером и промежуточными прокси.
  • Ограничения: Длина URL ограничена (обычно ~2048-4096 символов).
  • Использование в Node.js/Express: Получить параметры можно через req.query.

POST используется для отправки данных на сервер, обычно для создания или обновления ресурсов.

  • Параметры: Передаются в теле запроса (request body), не видны в URL.
  • Кэширование: По умолчанию не кэшируется.
  • Ограничения: Нет жестких ограничений на объем (ограничивается настройками сервера).
  • Использование в Node.js/Express: Для доступа к данным нужен middleware, например express.json(), затем данные доступны в req.body.

Пример в Express.js:

const express = require('express');
const app = express();
app.use(express.json()); // Middleware для парсинга JSON

// Обработка GET-запроса
app.get('/api/users', (req, res) => {
  const { search } = req.query; // Параметры из строки запроса
  // Логика поиска и возврата данных...
  res.json({ users: [] });
});

// Обработка POST-запроса
app.post('/api/users', (req, res) => {
  const userData = req.body; // Данные из тела запроса
  // Логика создания нового пользователя в БД...
  res.status(201).json({ id: 123, ...userData });
});

Ключевое отличие: GET предназначен для чтения, POST — для создания/изменения данных. Использование методов не по назначению нарушает RESTful-практики и может привести к проблемам с безопасностью и кэшированием.

Видео-ответы