【问题标题】:PUT API body missing in Postman / InsomniaPostman / Insomnia 中缺少 PUT API 主体
【发布时间】:2018-08-02 04:48:50
【问题描述】:

我正在使用 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 和原始 JSON。

为什么缺少正文(参数)?

【问题讨论】:

  • 根据文档,$_REQUEST 仅包含来自 GET、POST 和 COOKIE 的项目。如果你想要 PUT 的正文,请使用 php://input

标签: php api postman put


【解决方案1】:

$_REQUEST[] 中没有正文。使用:

$body = file_get_contents('php://input');

来自PHP manual entry on I/Ostreamsdocs:

php://input 是一个只读流,允许您读取原始数据 从请求正文。在 POST 请求的情况下,最好 使用 php://input 而不是 $HTTP_RAW_POST_DATA 因为它没有 依赖于特殊的 php.ini 指令。此外,对于那些情况 $HTTP_RAW_POST_DATA 默认不填充,它是一个潜在的 激活时内存占用较少的替代方案 always_populate_raw_post_data。 php://input 不适用于 enctype="multipart/form-data"。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-15
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 2019-03-11
    • 2021-01-23
    相关资源
    最近更新 更多