2017-05-02 8 views
0

JSON POSTボディを$ _REQUESTにデコードするためのPHPの機能は本当ですか?私がいるFormDataとJSONでパラメータを受け取るためにPHPでAPIを作成していPHP is automatically decoding JSON data?

として

同じではありません。私がPOSTMANでテストすると、PHPはPOST本体をcontent-type:application/jsonから$_REQUESTに自動的にデコードするように見えます。

私は午後一回それをテストしており、どのようにそれが可能かを理解できません。

これは、POSTリクエストです:

curl -X POST \ 
    http://xxxxx.com/api/user/profile/update \ 
    -H 'content-type: application/json' \ 
    -d '{ 
    "id" : 174, 
    "email" : "[email protected]", 
    "lang": "en_US", 
}' 

これは私が妄想を見ていますPHP

var_dump($_REQUEST) 

//output 
    'id' => int 174 
    'email' => string '[email protected]' (length=19) 
    'lang' => string 'en_US' (length=5) 

で得たものである??

POSTコンテンツタイプをapplication/json以外のものに変更した場合、自動デコードは行われません。

私はPHP5.6 + Phalcon 3.1を使用しています。 JSONの自動デコードについて何も言及していません。

ここに私のcomposer.jsonですが、私はこれらのパッケージのどれもそのようなことはしないと思います。

"require": { 
    "twilio/sdk" : "4.*", 
    "crossjoin/browscap": "~2.0", 
    "mixpanel/mixpanel-php" : "2.*", 
    "guzzlehttp/guzzle": "^6.2", 
    "geoip2/geoip2": "~2.0", 
    "overtrue/wechat": "~3.1", 
    "mongodb/mongodb": "^1.0.0", 
    "symfony/var-dumper": "^3.1", 
    "maxmind-db/reader": "~1.0", 
    "pda/pheanstalk": "^3.1", 
    "nesbot/carbon": "^1.21", 
    "sendgrid/sendgrid": "~5.1", 
    "ramsey/uuid": "^3.5", 
    "phpmyadmin/motranslator": "^3.0" 
} 

Googleで検索するのにベストトライしました。誰かが私に何らかの説明をして文書を指すことができますか?

+0

phpで作成したものと確信していますか? phalconやあなたの依存関係が原因かもしれません。 – kodmanyagha

+0

@kodmanyagha私はファルコンにそのような特徴はないと確信しています。しかし、他の可能性は知らない。ベアボーンコントローラでアプリケーションをテストしました。 – Reed

答えて

0

私は考えました。それは、PECL ::パッケージです:: json_post

https://pecl.php.net/package/json_post

この拡張モジュールは、PHPのフォームデータパーサへ "アプリケーション/ JSON" と "テキスト/ JSON" のためのPHPのコンテンツタイプのハンドラを提供します。着信要求の Content-Typetext/jsonの場合、要求本体のJSON の内容は、$_POSTに解析されます。

remi repoを使用してcentosにPHPをインストールします。 PHP 5.6をインストールしたばかりです。

関連する問題