file_get_contents("php://input")
ou $HTTP_RAW_POST_DATA
- lequel est le meilleur pour obtenir le corps de la requête JSON?
Et quel type de demande ( GET
ou POST
) dois-je utiliser pour envoyer des données JSON lors de l'utilisation côté client XmlHTTPRequest
?
Ma question est inspirée de cette réponse: Comment publier du JSON en PHP avec curl
Citation de cette réponse:
Du point de vue du protocole,
file_get_contents("php://input")
c'est en fait plus correct, puisque vous ne traitez pas vraiment les données de formulaire multipart http de toute façon.
la source
$HTTP_RAW_POST_DATA
est considéré comme obsolète etphp://input
peut être réutilisé.enable_post_data_reading
.Source: http://php.net/manual/en/wrappers.php.php .
la source
$HTTP_RAW_POST_DATA
est considéré comme obsolète etphp://input
peut être réutilisé.file_get_contents (php: // input) - récupère les données POST brutes et vous devez l'utiliser lorsque vous écrivez des API et avez besoin d'une entrée XML / JSON / ... qui ne peut pas être décodée en $ _POST par PHP un exemple:
envoyer par courrier JSON string
1.php
la source
Les règles habituelles doivent s'appliquer à la manière dont vous envoyez la demande. Si la requête est de récupérer des informations (par exemple un résultat de recherche partielle «indice», ou une nouvelle page à afficher, etc ...), vous pouvez utiliser GET. Si les données envoyées font partie d'une demande de changement (mise à jour d'une base de données, suppression d'un enregistrement, etc.) alors utilisez POST.
Côté serveur, il n'y a aucune raison d'utiliser l'entrée brute, à moins que vous ne souhaitiez récupérer l'intégralité du bloc de publication / récupération de données en une seule fois. Vous pouvez récupérer les informations spécifiques que vous souhaitez via les tableaux _GET / _POST comme d'habitude. Les bibliothèques AJAX telles que MooTools / jQuery géreront la partie la plus difficile de faire les appels AJAX réels et d'encoder les données de formulaire dans les formats appropriés pour vous.
la source
<input type="hidden" name="data" value="json data here" />
est tout à fait acceptable et vous permet de le récupérer de manière simple côté serveur avec $ _REQUEST ['data'].Pour les données JSON, il est beaucoup plus facile de les POSTER en tant que type de contenu "application / json". Si vous utilisez GET, vous devez encoder en URL le JSON dans un paramètre et c'est un peu compliqué. De plus, il n'y a pas de limite de taille lorsque vous effectuez un POST. La taille de GET est très limitée (4K au maximum).
la source
php.ini
.Votre deuxième question est simple, GET a une limite de taille de 1 à 2 kilo-octets à la fois du côté du serveur et du navigateur, donc tout type de plus grandes quantités de données que vous auriez à envoyer via POST.
la source