file_get_contents("php://input")
o $HTTP_RAW_POST_DATA
- ¿cuál es mejor para obtener el cuerpo de la solicitud JSON?
¿Y qué tipo de solicitud ( GET
o POST
) debo usar para enviar datos JSON cuando uso el lado del cliente XmlHTTPRequest
?
Mi pregunta se inspiró en esta respuesta: Cómo publicar JSON en PHP con curl
Cita de esa respuesta:
Desde la perspectiva del protocolo, en
file_get_contents("php://input")
realidad es más correcto, ya que de todos modos no está procesando datos de formularios http multiparte.
fuente
$HTTP_RAW_POST_DATA
se considera obsoleto yphp://input
se puede reutilizar.enable_post_data_reading
.Fuente: http://php.net/manual/en/wrappers.php.php .
fuente
$HTTP_RAW_POST_DATA
se considera obsoleto yphp://input
se puede reutilizar.file_get_contents (php: // input): obtiene los datos POST sin procesar y debe usarlos cuando escribe API y necesita una entrada XML / JSON / ... que no se puede decodificar en $ _POST por PHP, algún ejemplo:
enviar por correo JSON cadena
1.php
fuente
Deben aplicarse las reglas habituales sobre cómo enviar la solicitud. Si la solicitud es para recuperar información (por ejemplo, un resultado de "sugerencia" de búsqueda parcial, o una nueva página que se mostrará, etc.), puede utilizar GET. Si los datos que se envían son parte de una solicitud para cambiar algo (actualizar una base de datos, eliminar un registro, etc.), utilice POST.
En el lado del servidor, no hay razón para usar la entrada sin procesar, a menos que desee tomar todo el bloque de publicación / obtención de datos de una sola vez. Puede recuperar la información específica que desee a través de las matrices _GET / _POST como de costumbre. Las bibliotecas AJAX como MooTools / jQuery manejarán la parte difícil de realizar las llamadas AJAX reales y codificar los datos del formulario en los formatos adecuados para usted.
fuente
<input type="hidden" name="data" value="json data here" />
es completamente aceptable y le permite recuperarlo trivialmente del lado del servidor con $ _REQUEST ['data'].Para los datos JSON, es mucho más fácil PUBLICARLO como tipo de contenido "application / json". Si usa GET, debe codificar en URL el JSON en un parámetro y es un poco complicado. Además, no hay límite de tamaño cuando haces POST. El tamaño de GET es muy limitado (4K como máximo).
fuente
php.ini
.Su segunda pregunta es fácil, GET tiene un límite de tamaño de 1-2 kilobytes tanto en el servidor como en el navegador, por lo que cualquier tipo de grandes cantidades de datos tendría que enviar a través de POST.
fuente