Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как прочитать JSON из тела запроса

Короткий ответ

Данные, отправленные как JSON, не попадают в $_POST. Прочитайте тело запроса из php://input:

<?php
 
// api.php
 
$data = json_decode(file_get_contents('php://input'), true);
 
echo $data['name'] ?? 'no name';

С проверкой

Неверный JSON должен давать ответ с кодом 400:

<?php
 
// api.php
 
header('Content-Type: application/json');
 
try {
    $data = json_decode(file_get_contents('php://input'), true, flags: JSON_THROW_ON_ERROR);
} catch (JsonException) {
    http_response_code(400);
    exit(json_encode(['error' => 'Invalid JSON']));
}
 
echo json_encode(['received' => $data]);

Функции из этого ответа

  • json_decode — Разбирает строку JSON.
  • file_get_contents — Читает файл целиком в строку.
  • http_response_code — Задаёт или возвращает код состояния ответа.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.