PHP未记录自动解码内容类型:application / json到$ _REQUEST

时间:2017-05-02 20:21:10

标签: php json content-type phalcon

PHP中是否真的有一个未记录的功能可以将JSON POST主体解码为$ _REQUEST?

PHP is automatically decoding JSON data?

不同

我在PHP中创建一个API来接收FormData和JSON中的参数。当我在POSTMAN中测试时,PHP似乎会自动将content-type:application/json的POST正文解码为$_REQUEST

我整个下午都在测试它,无法弄清楚它是如何可能的。

这是发布请求:

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

这是我在PHP中获得的

var_dump($_REQUEST)

//output
  'id' => int 174
  'email' => string 'reed@xxxxx.com' (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"
}

尽我所能在谷歌搜索。有人可以给我一个带有一些解释的文件吗?

1 个答案:

答案 0 :(得分:0)

我发现了。它是 PECL :: Package :: json_post

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

  

此扩展为。提供了PHP内容类型处理程序   “application / json”和“text / json”到PHP的表单数据解析器。如果   传入请求的Content-Typetext/json,即JSON   请求正文的内容将被解析为$_POST

我使用remi repo在centos上安装PHP。它只是我安装的PHP 5.6