美文网首页
php获取json类型的post请求参数

php获取json类型的post请求参数

作者: 苍老师的眼泪 | 来源:发表于2020-05-03 21:18 被阅读0次

    如果你曾因为后端拿不到请求参数而抓狂,那不如先补充以下基础知识吧:
    故事还是从头说起吧。
    form表单的enctype属性有3个值


    form.PNG

    图片来源:https://www.w3schools.com/tags/att_form_enctype.asp

    如果是传统的form表单提交:
    默认情况下是enctype是application/x-www-form-urlencoded,这个时候php用

    $_POST["参数名"]
    

    轻松拿到参数。
    如果因为某种原因(比如上传文件)设置enctype为multipart/form-data或使用了axios等默认使用multipart/form-data作为编码方式的第三方的工具,这个时候php用

    $_POST["参数名"]
    

    轻松拿到参数。
    好,现在只剩最后一个enctype属性值:text/plain。什么时候用到这个属性呢?答案是你需要使用你自己的格式的时候,比如:json等格式的时候,比如postman在选择请求体类型的时候如果你选用raw类型的请求体(这个raw类型也就是text/plain类型),右边就可以选具体的格式,比如json:


    postman.png

    这个时候php用

    $_POST["参数名"]
    

    轻松拿不到参数。
    为了使php拿到text/plain格式的请求体参数,首先用file_get_contents获取请求体:

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

    ok,现在$post里面就有真正的参数了,再用json_decode将一个json字符串解密成一个对象:

    $decoded_post = json_decode($post);
    var_dump($decoded_post);
    

    就可以发现打印了一个对象,里面的键是参数名,值是参数值了

    postresult.png

    参考:https://stackoverflow.com/a/8207498/12138094

    相关文章

      网友评论

          本文标题:php获取json类型的post请求参数

          本文链接:https://www.haomeiwen.com/subject/zyijghtx.html