Ответ
Формат запроса в веб-приложении определяет структуру и способ передачи данных от клиента (браузера, мобильного приложения) к серверу. Он состоит из нескольких взаимосвязанных частей:
-
HTTP-метод (Verb): Определяет намерение операции.
GET— получение ресурса. Параметры передаются в URL (query string).POST— создание ресурса или отправка данных. Данные передаются в теле запроса.PUT/PATCH— полное или частичное обновление ресурса.DELETE— удаление ресурса.
-
Заголовки (Headers): Мета-информация. Ключевой для формата —
Content-Type.application/x-www-form-urlencoded— стандартные HTML-формы.multipart/form-data— формы с загрузкой файлов.application/json— обмен данными в формате JSON (стандарт для REST API).application/xml/text/xml— обмен в формате XML.
-
Тело запроса (Body): Содержит сами данные в формате, указанном в
Content-Type.
Пример POST-запроса с JSON и обработка на PHP:
// Клиентский код (JavaScript)
fetch('https://api.example.com/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
},
body: JSON.stringify({
name: 'Alice',
email: 'alice@example.com',
active: true
})
});
// Обработка на сервере (PHP)
// 1. Проверяем метод и заголовок
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405); // Method Not Allowed
exit;
}
$contentType = $_SERVER['CONTENT_TYPE'] ?? '';
if (stripos($contentType, 'application/json') === false) {
http_response_code(415); // Unsupported Media Type
echo json_encode(['error' => 'Expecting JSON data']);
exit;
}
// 2. Получаем и декодируем тело запроса
$jsonInput = file_get_contents('php://input');
$data = json_decode($jsonInput, true); // Преобразуем в ассоциативный массив
if (json_last_error() !== JSON_ERROR_NONE) {
http_response_code(400); // Bad Request
echo json_encode(['error' => 'Invalid JSON']);
exit;
}
// 3. Используем данные (валидация, сохранение в БД и т.д.)
// $data['name'], $data['email'], $data['active']
Популярные архитектурные стили, определяющие форматы запросов и ответов: REST (на основе HTTP-методов и ресурсов), GraphQL (единая endpoint, гибкий язык запросов), gRPC (бинарный протокол на основе HTTP/2).