127 votes

file_get_contents("php://input") ou $HTTP_RAW_POST_DATA, laquelle est la meilleure pour obtenir le corps du JSON demande?

Du côté client, le type de la requête (GET ou POST) est le meilleur à utiliser pour envoyer les données JSON si j'utilise XmlHTTPRequest?

Mon application utilise ce flux de données pour récupérer les données du formulaire de base de données et d'exécuter certaines fonctions en PHP.

Ma question a été inspiré par cette réponse: Comment publier JSON en PHP avec curl

Il dit:

À partir d'un protocole point de vue file_get_contents("php://input") est en fait plus exact, puisque vous n'êtes pas vraiment de traitement http multipart forme de données, de toute façon.

206voto

zaf Points 12350

En fait php://input vous permet de lire les premières données POST.

Il est moins gourmande en mémoire alternative à $HTTP_RAW_POST_DATA et n'a pas besoin spécial php.les directives ini.

php://input n'est pas disponible avec enctype="multipart/form-data".

Référence: http://php.net/manual/en/wrappers.php.php

16voto

ZEE Points 79

php://input est en lecture seule de flux qui permet de lire des données brutes à partir du corps de la requête. Dans le cas des requêtes POST, il est préférable pour utiliser php://input au lieu de $HTTP_RAW_POST_DATA comme il n'a pas dépendent spécial php.les directives ini. En outre, pour les cas où $HTTP_RAW_POST_DATA n'est pas renseigné par défaut, c'est un potentiellement moins gourmande en mémoire alternative à l'activation de always_populate_raw_post_data.

Source: http://php.net/manual/en/wrappers.php.php.

3voto

Marc B Points 195501

Les règles habituelles doivent demander comment vous envoyer la demande. Si la demande est pour récupérer des informations (par exemple, une recherche partielle de "conseil" résultat, ou une nouvelle page à afficher, etc...) vous pouvez utiliser pour OBTENIR. Si les données envoyées est partie d'une demande de changement de quelque chose (mise à jour d'une base de données, supprimer un enregistrement, etc..), puis utiliser la POSTE.

Côté serveur, il n'y a pas de raison d'utiliser les entrées brutes, sauf si vous voulez attraper l'ensemble de la post/get bloc de données en un seul coup. Vous pouvez récupérer les informations spécifiques que vous souhaitez via le _GET/_POST tableaux comme d'habitude. AJAX bibliothèques comme MooTools/jQuery va gérer la partie la plus difficile de faire de réels appels AJAX et encodage de données dans des formats appropriés pour vous.

2voto

ZZ Coder Points 36990

Pour les données JSON, il est beaucoup plus facile de POSTER comme "application/json" content-type. Si vous utilisez l'OBTENIR, vous devez encoder en JSON dans un paramètre et c'est un peu bordélique. Aussi, il n'y a pas de limite de taille lorsque vous publiez. OBTENIR la taille si elle est très limitée (4K).

2voto

Pekka 웃 Points 249607

Je ne comprends pas le titre de votre question (Qu'entendez-vous par un JSON demande? Une demande pour récupérer JSON)?

mais votre deuxième question est simple, a une limitation de taille de 1 à 2 kilo-octets à la fois le serveur et le navigateur côté, de sorte que tout type de grandes quantités de données que vous auriez à envoyer par la POSTE.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X