Для чего нужен HTTP-метод GET?

«Для чего нужен HTTP-метод GET?» — вопрос из категории Сети, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные характеристики и использование:

  • Данные в URL: Параметры передаются в строке запроса (после ?).
    GET /api/users?role=admin&limit=10 HTTP/1.1
  • Кешируемость: Ответы на GET-запросы могут и должны кешироваться браузерами и промежуточными прокси.
  • Закладки и история: URL GET-запроса можно сохранить в закладки, так как он содержит все необходимые параметры.
  • Ограничения: Длина URL ограничена (обычно ~2048-4096 символов), данные видны в истории и логах.

Пример на C# (ASP.NET Core):

// Контроллер для обработки GET-запроса
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    [HttpGet] // Атрибут, указывающий на метод GET
    public IActionResult GetUsers([FromQuery] string role, [FromQuery] int limit = 20)
    {
        // Логика получения данных (без модификации состояния)
        var users = _userService.GetFilteredUsers(role, limit);
        return Ok(users); // Возвращаем данные с кодом 200 OK
    }
}

Когда НЕ использовать GET: Для отправки конфиденциальных данных (пароли, токены) или больших объемов данных (используйте POST или PUT).