卷曲,如何使用GET请求发送字符串列表?

时间:2019-04-12 09:55:42

标签: rest curl

我想发送['1', '2', '3']作为GET请求。 我认为在检索与POST相反的数据时(在修改/创建数据时)会使用GET请求

无法通过Google搜索如何使用GET发送字符串列表确实使我感到疑惑,是否最好在此处使用POST?

2 个答案:

答案 0 :(得分:2)

一旦您打算执行GET请求,就可以使用以下方法之一在查询字符串中发送数据:

if self.object.status:
    do sth
else:
    redirect('productlistpage')
curl -G http://example.org -d "query=1,2,3"

让我着重指出,不建议使用GET请求中的有效负载。引用RFC 7231

  

curl -G http://example.org -d "query=1&query=2&query=3" 请求消息中的有效负载没有定义的语义;在GET请求上发送有效内容正文可能会导致某些现有的实现拒绝该请求。

还请记住,GET请求不应用于修改资源:它们仅用于信息检索,没有副作用。话虽如此,GET安全幂等。您可以在此answer中查看有关这些概念的更多详细信息。


如果必须在有效负载中发送数据(并且您打算修改资源),请坚持使用POST。假设您的有效载荷是一个JSON文档,您将获得以下内容:

GET

答案 1 :(得分:-1)

如果要使用 curl 将其发送到正文中,则可以这样调用服务:

curl -X GET --data "['1', '2', '3']" "https://example.com/test.php"

例如,在PHP中,您可以从只读流 php:// input

中读取它
<?php
$get_body = file_get_contents('php://input');

更好的方法是将数组分配给参数,例如x:

curl -X GET "https://example.com/test.php?x[]=1&x[]=2&x[]=3"

在PHP中,您将在 $ _ GET ['x'] 中以数组形式接收这些值:

<?php
print_r($_GET['x']);

输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
相关问题