我正在使用Postman和Insomnia等应用程序发送API请求。
我可以使用Body作为表单数据发送POST请求,使其看起来像
parameters:[{"fullname" : "John Smith", "username" : "jsmith", "email" : "jsmith@example.com", "password" : "s348nfdf"},{"fullname" : "Janine Smith", "username" : "jsmith1", "email" : "jsmith1@example.com", "password" : "ddfgret567"}]↵
一切正常,我可以从后端的请求中获取参数。
但是,如果我将请求更改为PUT,则主体(上面的参数)不在请求中($ _REQUEST)。请求本身成功,没有错误代码。
我也尝试过x-www-form-urlencoded和raw JSON。
为什么身体(参数)缺失?
答案 0 :(得分:1)
$_REQUEST[]
中没有正文。使用:
$body = file_get_contents('php://input');
来自PHP manual entry on I/O streamsdocs:
php:// input是一个只读流,允许您读取原始数据 来自请求机构。在POST请求的情况下,它是可取的 使用php://输入而不是$ HTTP_RAW_POST_DATA,因为它没有 依赖于特殊的php.ini指令。而且,对于那些情况 默认情况下不会填充$ HTTP_RAW_POST_DATA,它是潜在的 激活的内存密集程度较低 always_populate_raw_post_data。 php://输入不可用 ENCTYPE = “多部分/格式数据”。