V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SP00F
V2EX  ›  PHP

比较好奇 ThinkPHP 为什么只接 app/json 而不是 application/json 的 POST 数据?

  •  
  •   SP00F · 2019-03-21 07:18:42 +08:00 · 4825 次点击
    这是一个创建于 1857 天前的主题,其中的信息可能已经有所发展或是发生改变。
    搞不明白,这两天第一次接触 ThinkPHP 这个框架想写点东西玩。。发现 POST 的时候接收不到数据,最后查了一下才知道接收 JSON 数据在 Content-Type 为 app/json 的情况下才接收 JSON 数据。

    非常好奇为什么会是 app/json 而不是 application/json
    15 条回复    2023-01-17 18:38:02 +08:00
    Varobjs
        1
    Varobjs  
       2019-03-21 07:21:58 +08:00 via Android   ❤️ 1
    因为作者懒?毕竟早期版本,单个大写字母函数都有的框架
    lcy630409
        2
    lcy630409  
       2019-03-21 09:05:53 +08:00   ❤️ 1
    框架只是一个符合大部分人的东西
    如果你使用框架 却被它束缚了 建议你不要使用 写原生的 才能进步
    框架如果和你的项目不符合 可以修改框架!
    orqzsf1
        3
    orqzsf1  
       2019-03-21 09:23:17 +08:00   ❤️ 1
    ```
    /**
    * @var array 资源类型
    */
    protected $mimeType = [
    'xml' => 'application/xml,text/xml,application/x-xml',
    'json' => 'application/json,text/x-json,application/jsonrequest,text/json',
    'js' => 'text/javascript,application/javascript,application/x-javascript',
    'css' => 'text/css',
    'rss' => 'application/rss+xml',
    'yaml' => 'application/x-yaml,text/yaml',
    'atom' => 'application/atom+xml',
    'pdf' => 'application/pdf',
    'text' => 'text/plain',
    'image' => 'image/png,image/jpg,image/jpeg,image/pjpeg,image/gif,image/webp,image/*',
    'csv' => 'text/csv',
    'html' => 'text/html,application/xhtml+xml,*/*',
    ];
    ```

    高级黑?
    bestkayle
        4
    bestkayle  
       2019-03-21 09:27:19 +08:00   ❤️ 1
    要么扯犊子要么就是太菜了。。这怎么可能没有。
    conn4575
        5
    conn4575  
       2019-03-21 09:29:22 +08:00 via Android   ❤️ 1
    我不信
    allgy
        6
    allgy  
       2019-03-21 09:29:56 +08:00
    不按规范来呗
    liuguang
        7
    liuguang  
       2019-03-21 15:39:00 +08:00
    tp 不按规范来,早就不是一次两次了
    ben1024
        8
    ben1024  
       2019-03-21 19:06:02 +08:00
    不发个对应版本呢
    SP00F
        9
    SP00F  
    OP
       2019-03-21 19:28:11 +08:00
    @ben1024 #8 5.x 版本
    ben1024
        10
    ben1024  
       2019-03-21 19:34:42 +08:00
    @SP00F 3 楼已贴出,确定你的框架不是被魔改
    SP00F
        11
    SP00F  
    OP
       2019-03-21 19:46:53 +08:00
    @orqzsf1 #3 首先我不是高级黑,不要上来就盖一个帽子说人高级黑。是见不得人好奇了解问询一下 PHP 框架的东西?

    我纯粹是好奇,并且是确实在用的时候 insomnia 测试 POST 请求,Content-Type 为 app/json 的时候 ThinkPHP 用 Request::instance()->param('username', '', 'trim'); 可以取数据,但是 Content-Type 为 application/json 的时候就取不到数据了。

    Google 后没有得到为什么会使用 app/json 所以才提问,也确实有文章说过没有接收到的原因就是因为是 app/json 而不是 application/json
    SP00F
        12
    SP00F  
    OP
       2019-03-21 19:54:33 +08:00
    @lcy630409 #2 多谢,只是临时接触一下用一下。主要学不在 PHP 这块。
    SP00F
        13
    SP00F  
    OP
       2019-03-21 19:55:41 +08:00
    @bestkayle #4 我确实菜不是很熟悉 ThinkPHP 但是不能代表我不能咨询一下这个原因,在发这个帖子之前我确实遇到的是用 app/json 能接收数据,用 application/json 就解析不出来数据
    SP00F
        14
    SP00F  
    OP
       2019-03-21 19:58:41 +08:00
    @ben1024 #10 我在 www.thinkphp.cn 下载的核心版,我全局搜索了一下 app/json 有 6 个文件存在,我给替换了。现在是正常的。再看原压缩包的搜索已经没有。。我不是高级黑

    是真的有搜索到并且改过来了,去查了官方 GitHub 的代码也没有这样的情况。Google 是有这样的情况文章在,所以我才来问一下。
    Andywo
        15
    Andywo  
       2023-01-17 18:38:02 +08:00
    我 2022 年再问类似的问题,会被你们打死么?

    在跨域的情况下,用同一接口测试了下

    form 格式请求,能正常拿到 token 及后面的数据
    ```
    fetch("http://fast.com/api/test", {
    method:'POST',
    headers:{
    "Content-Type":"application/x-www-form-urlencoded"
    },
    body:"token=489b4f53-fbd0-43a3-a453-e39f3539f33b",

    })
    .then(response => response.json())
    .then(result => console.log(result))
    ```
    而 post 请求就不正常了,拿不到 token
    ```
    fetch("http://fast.com/api/test", {
    method:"POST",
    headers:{
    "Content-Type":"application/json"
    },
    body:JSON.stringify({
    "token":"489b4f53-fbd0-43a3-a453-e39f3539f33b"
    })

    })
    .then(response => response.json())
    .then(result => console.log(result))
    ```
    我是在 localhost 下另外一个端口发请求的,排除不是跨域的问题,调试断点进去发现$_POST 都是空的,难道我要看下框架源码?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2623 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 10:40 · PVG 18:40 · LAX 03:40 · JFK 06:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.