Какова роль HTTP в архитектуре REST?

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

Ответ

HTTP является протоколом прикладного уровня, который служит транспортным механизмом для REST. REST (Representational State Transfer) — это архитектурный стиль, который использует возможности HTTP как протокола без состояния.

Как REST использует HTTP:

  • Методы HTTP как операции:
    • GET — получение ресурса.
    • POST — создание ресурса.
    • PUT/PATCH — полное/частичное обновление ресурса.
    • DELETE — удаление ресурса.
  • URI как идентификаторы ресурсов: Каждый ресурс имеет уникальный адрес (например, https://api.example.com/users/42).
  • Коды состояния HTTP для обратной связи: 200 OK, 201 Created, 404 Not Found, 500 Internal Server Error.
  • Заголовки HTTP для метаданных: Content-Type, Accept, Authorization.

Пример RESTful-запроса на Java 11+:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.example.com/users/1"))
        .header("Accept", "application/json")
        .GET()
        .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Status: " + response.statusCode()); // 200
System.out.println("Body: " + response.body()); // JSON с данными пользователя

Таким образом, REST определяет как использовать HTTP, а HTTP предоставляет средства для этого.