Skip to content

3) запросы (requests)

Виды запросов в HTTP

В HTTP существует 9 основных видов запросов, которые используются для взаимодействия между клиентом и сервером:

  1. GET: Запрос на получение ресурса с сервера.
  2. POST: Запрос на создание нового ресурса на сервере.
  3. PUT: Запрос на обновление существующего ресурса на сервере.
  4. DELETE: Запрос на удаление ресурса с сервера.
  5. HEAD: Запрос на получение метаданных ресурса с сервера без получения содержимого ресурса.
  6. OPTIONS: Запрос на получение списка поддерживаемых методов запроса для ресурса.
  7. CONNECT: Запрос на установление туннеля к серверу.
  8. PATCH: Запрос на частичное обновление ресурса на сервере.
  9. TRACE: Запрос на получение трассировки запроса.

  10. Пример HTTP запроса

Пример GET запроса на получение главной страницы сайта example.com:

GET / HTTP/1.1 Host: example.com Accept: text/html User-Agent: Mozilla/5.0

В этом примере:

GET - метод запроса. / - путь к ресурсу, который мы хотим получить. HTTP/1.1 - версия протокола HTTP. Host: example.com - заголовок, указывающий домен сервера. Accept: text/html - заголовок, указывающий тип данных, которые мы хотим получить. User-Agent: Mozilla/5.0 - заголовок, указывающий тип браузера, который отправляет запрос.

поотправлять запросы можно с PO/postman у меня есть аккаунт keepass

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

В Java программе можно обработать тело запроса с помощью класса HttpServletRequest. Этот класс предоставляет методы для получения данных из тела запроса.

Приведу пример работы с обработкой запроса и тела запроса в Java программе с использованием фреймворка Spring Boot:

import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;

@RestController public class MyController {

@PostMapping("/processRequest")
public String processRequest(@RequestBody String requestBody, HttpServletRequest request) {
    // Получаем данные из тела запроса
    String body = requestBody;

    // Получаем данные из тела запроса с помощью BufferedReader
    StringBuilder sb = new StringBuilder();
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()))) {
        String line;
        while ((line = reader.readLine()) != null) {
            sb.append(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    String body2 = sb.toString();

    // Обрабатываем данные
    System.out.println("Тело запроса: " + body);
    System.out.println("Тело запроса (с помощью BufferedReader): " + body2);

    return "Запрос обработан";
}

}

В этом примере мы создали контроллер MyController с методом processRequest, который обрабатывает POST-запросы на URL /processRequest. Мы используем аннотацию @RequestBody для получения данных из тела запроса в виде строки.

Также мы используем HttpServletRequest для получения данных из тела запроса с помощью BufferedReader. Это позволяет нам получить данные из тела запроса в виде строки.

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

Чтобы отправить запрос на этот контроллер, можно использовать инструменты, такие как Postman или curl. Например, с помощью curl можно отправить запрос следующим образом:

curl -X POST -H "Content-Type: text/plain" -d "Hello, World!" http://localhost:8080/processRequest

Это отправит POST-запрос на URL /processRequest с телом запроса "Hello, World!". Контроллер обработает этот запрос и выведет полученные данные в консоль.