Issue reading HTTP request body from a JSON POST in PHP

In PHP, you can read the body of an HTTP request using the file_get_contents('php://input') function. To parse the body as a JSON object, you can use the json_decode() function. Here's an example of how you can do this for a JSON POST request:


$data = json_decode(file_get_contents('php://input'), true);

The json_decode() function takes the raw input string and converts it into a PHP associative array. The second parameter of json_decode() is a boolean that tells the function whether or not to return an associative array. In this case, it is set to true.

Make sure your php version is atleast 5.2 and also check if json extension is enabled in your php.ini file.

Also, you should check if the post request is coming with correct format and correct content-type header.


if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_SERVER['CONTENT_TYPE']) && $_SERVER['CONTENT_TYPE'] === 'application/json') {
  $data = json_decode(file_get_contents('php://input'), true);
  // do something with $data
} else {
  // handle invalid request