Cómo recibir datos tipo json en php
PHP recibe datos en formato JSON
En los servicios API, actualmente es popular utilizar el formato json para la interacción.
Envíe datos Json a la interfaz llamada por el front-end. Esto es relativamente simple. Solo necesita organizar los datos y convertirlos con json_encode($array), y el front-end obtendrá los datos. formato json.
Recibir datos json enviados por el front-end es un poco más complicado. La razón es que el tipo de datos reconocido por PHP de forma predeterminada es el tipo de datos estándar application/x-www.form-urlencoded. Por lo tanto, el contenido como text/xml o SOAP o application/octet-stream y application/json no se puede analizar. Si usa la matriz $_POST para recibirlo, fallará.
En este momento, puede utilizar $GLOBALS['HTTP_RAW_POST_DATA'] o file_get_contents('php://input') para obtener los datos enviados
Mirando el manual, podrá puede encontrar $GLOBALS[' La diferencia entre HTTP_RAW_POST_DATA'] y $_POST:
$_POST: una matriz de variables pasadas a través del método HTTP POST, que es una variable global automática.
$GLOBALS['HTTP_RAW_POST_DATA']: Genera siempre la variable $HTTP_RAW_POST_DATA que contiene los datos POST originales. Esta variable solo se genera cuando se encuentran datos de un tipo MIME no reconocido. $HTTP_RAW_POST_DATA no está disponible para los datos del formulario enctype="multipart/form-data". Es decir, básicamente $GLOBALS['HTTP_RAW_POST_DATA'] y $_POST son iguales. Pero si PHP no reconoce los datos publicados, puede usar $GLOBALS['HTTP_RAW_POST_DATA'] para recibirlos, como texto/xml o jabón, etc.
Explicación adicional: el tipo de datos reconocido por PHP de forma predeterminada es el tipo de datos estándar application/x-www.form-urlencoded.