Какие основные HTTP методы и их назначение?

«Какие основные HTTP методы и их назначение?» — вопрос из категории Сети, который задают на 23% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основные HTTP методы (или глаголы) определяют действие, которое нужно выполнить с ресурсом.

  • GET — запрос данных с сервера. Безопасный (не изменяет состояние сервера) и идемпотентный (повторный запрос дает тот же результат).
  • POST — отправка данных на сервер для создания нового ресурса или выполнения операции. Не идемпотентный.
  • PUT — полное обновление (или создание) ресурса по указанному URI. Идемпотентный.
  • PATCH — частичное обновление ресурса. Не идемпотентный.
  • DELETE — удаление ресурса. Идемпотентный.
  • HEAD — аналогичен GET, но сервер возвращает только заголовки ответа без тела.
  • OPTIONS — возвращает список HTTP-методов, поддерживаемых для указанного ресурса.
  • TRACE — диагностический метод, возвращающий клиенту полученный запрос (используется для отладки).
  • CONNECT — используется для установления туннеля к серверу, идентифицируемому целевым ресурсом (например, для SSL).

Пример использования в Java с HttpClient:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.example.com/users/1"))
    .GET() // Заменить на .POST(), .PUT(), .DELETE() и т.д.
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());