我应该使用php:// input和/或$ _POST吗?

丹尼尔

我正在使用以下结构构建API:

  • 方法 POST
  • uri /words
  • 身体{"word":"example"}

此请求应在数据库中添加单词,如果我通过httpie一切进行测试都可以。

$ http POST localhost:8000/words word="new word2"

HTTP/1.1 200 OK
Access-Control-Allow-Headers: application/json
Access-Control-Allow-Origin: http://localhost:8080
Connection: close
Content-Type: application/json
Host: localhost:8000
X-Powered-By: PHP/7.0.12-1+deb.sury.org~xenial+1
{
    "test": {
        "method": "POST",
        "input": {
            "word": "new word2"
        }, 
        "post": []
    }, 
    "words": {
        "id": "581f2f118b0414307476f7b3", 
        "word": "new word2"
    }
}

test我放置的变量中获得php

$method = $_SERVER['REQUEST_METHOD'];
$input =  json_decode(file_get_contents('php://input'),true);
$post =  $_POST;

我们可以看到那$_POST是空的。如果我使用javascript:

$(form).submit(function(e) {
    var url = "http://localhost:8000/words"; 
    var data = {"word" : form.elements["word"].value };
    $.ajax({
        type: "POST",
        url: url,
        data: data,
        dataType: 'json',
        success: function(data)
        {
            console.log(JSON.stringify(data)); 
        }
    });
    e.preventDefault(); 
});

我获得以下控制台日志:

{
   "test":{
      "method":"POST",
      "input":null,
      "post":{
         "word":"word from form"
      }
   },
   "words":{
      "id":"581f34b28b0414307476f7b6",
      "word":null
   }
}

现在input是空的。Word为空,因为我正在$input["word"]从中处理php://input我的问题:

  • 我应该处理$_POST还是检查两个变量?
  • 使用这些方法的最佳做法如何?
  • 我可以php://input从浏览器发送,也$_POST可以从命令行收费发送httpie吗?
昆汀

您手动构造的示例和JavaScript示例并不相同。

在第一个中,您将发送具有application / json内容类型的JSON编码数据。

在第二步中,您将JavaScript对象传递给jQuery,并使其遵循默认行为,即使用application / x-www-form-urlencoded格式对其进行编码并将其用作内容类型(就像提交一个常规的HTML表单即可)。

PHP在POST请求中支持application / x-www-form-urlencoded数据,但不支持JSON。

我应该处理$ _POST还是同时检查两个变量?

如果您要发送应用程序/ x-www-form-urlencoded数据或PHP支持的其他格式,请使用$_POST否则,您需要从中获取原始数据php://input并自己解析。

我可以从浏览器发送php:// input吗?

查看JSON格式的POST数据

像httpie这样来自命令行收费的$ _POST?

请参阅httpie文档

http --form POST api.example.org/person/1 name='John Smith'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP:我应该同时使用 MYSQLI_CLIENT_COMPRESS 和 MYSQL_CLIENT_SSL 标志吗?

来自分类Dev

我应该使用<field>而不是<input>标记进行输入吗?

来自分类Dev

我可以使用PHP / CURL同时发布JSON正文和POST值吗?

来自分类Dev

我应该同时使用NotNull和ContractAnnotation(“ null => halt”)吗?

来自分类Dev

我应该使用NSDate跟踪到达时间和延迟吗?

来自分类Dev

我应该在GET和POST请求中转义字符吗?

来自分类Dev

我应该在GET和POST请求中转义字符吗?

来自分类Dev

角度2。我可以同时使用ViewChild和@Input吗?

来自分类Dev

在设计REST API端点时应该使用POST和DELETE或PATCH吗?

来自分类Dev

我应该使用php返回rexecuta脚本吗

来自分类Dev

我的链式 POST 和 GET axios 调用变慢是很自然的吗?

来自分类Dev

可以设置指向 POST 和 GET 的 PHP 指针吗?

来自分类Dev

如果我仅打算使用一台PC,应该使用MAAS和Juju吗?

来自分类Dev

如果我仅打算使用一台PC,应该使用MAAS和Juju吗?

来自分类Dev

我应该使用参考吗?

来自分类Dev

我应该使用LightOpenID吗?

来自分类Dev

我应该使用Lua吗?

来自分类Dev

我应该使用Sqlite吗

来自分类Dev

我应该使用webview吗?

来自分类Dev

我应该使用继承吗?

来自分类Dev

我应该使用模式吗

来自分类Dev

使用浮点值时,我应该结合乘法和除法步骤吗?

来自分类Dev

我应该对带有Redis的Pub和Sub使用单独的连接吗?

来自分类Dev

我应该在域测试中继续使用模拟和存根吗?

来自分类Dev

我应该在类实现中使用getter和setter吗?

来自分类Dev

我应该同时使用后端和前端表单验证吗?

来自分类Dev

我应该使用@NotNull和@NonNull在一起吗?

来自分类Dev

我应该使用Cygwin Terminal和Cygwin Bash Shell或cygwin.bat吗?

来自分类Dev

我应该使用Session State或Viewstate在asp中存储和保存信息吗?

Related 相关文章

  1. 1

    PHP:我应该同时使用 MYSQLI_CLIENT_COMPRESS 和 MYSQL_CLIENT_SSL 标志吗?

  2. 2

    我应该使用<field>而不是<input>标记进行输入吗?

  3. 3

    我可以使用PHP / CURL同时发布JSON正文和POST值吗?

  4. 4

    我应该同时使用NotNull和ContractAnnotation(“ null => halt”)吗?

  5. 5

    我应该使用NSDate跟踪到达时间和延迟吗?

  6. 6

    我应该在GET和POST请求中转义字符吗?

  7. 7

    我应该在GET和POST请求中转义字符吗?

  8. 8

    角度2。我可以同时使用ViewChild和@Input吗?

  9. 9

    在设计REST API端点时应该使用POST和DELETE或PATCH吗?

  10. 10

    我应该使用php返回rexecuta脚本吗

  11. 11

    我的链式 POST 和 GET axios 调用变慢是很自然的吗?

  12. 12

    可以设置指向 POST 和 GET 的 PHP 指针吗?

  13. 13

    如果我仅打算使用一台PC,应该使用MAAS和Juju吗?

  14. 14

    如果我仅打算使用一台PC,应该使用MAAS和Juju吗?

  15. 15

    我应该使用参考吗?

  16. 16

    我应该使用LightOpenID吗?

  17. 17

    我应该使用Lua吗?

  18. 18

    我应该使用Sqlite吗

  19. 19

    我应该使用webview吗?

  20. 20

    我应该使用继承吗?

  21. 21

    我应该使用模式吗

  22. 22

    使用浮点值时,我应该结合乘法和除法步骤吗?

  23. 23

    我应该对带有Redis的Pub和Sub使用单独的连接吗?

  24. 24

    我应该在域测试中继续使用模拟和存根吗?

  25. 25

    我应该在类实现中使用getter和setter吗?

  26. 26

    我应该同时使用后端和前端表单验证吗?

  27. 27

    我应该使用@NotNull和@NonNull在一起吗?

  28. 28

    我应该使用Cygwin Terminal和Cygwin Bash Shell或cygwin.bat吗?

  29. 29

    我应该使用Session State或Viewstate在asp中存储和保存信息吗?

热门标签

归档