Curl, Как отправить список строк с помощью GET-запроса? - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу отправить ['1', '2', '3'] как запрос GET.Я думал, что запрос GET используется, когда вы извлекаете данные, противоположные POST (когда вы изменяете / создаете данные)

Если Google не может отправить список строк с помощью GET, возникает вопрос, лучше ли использоватьPOST здесь?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019

Как только вы намереваетесь выполнить запрос GET, вы можете отправить данные в строку запроса , используя один из следующих подходов:

curl -G http://example.org -d "query=1,2,3"
curl -G http://example.org -d "query=1&query=2&query=3"

Позвольте мне подчеркнуть, что полезные данные в запросах GET не рекомендуются. Цитирование RFC 7231 :

Полезная нагрузка в сообщении запроса GET не имеет определенной семантики; отправка тела полезной нагрузки по запросу GET может привести к тому, что некоторые существующие реализации отклонят запрос.

Также следует помнить, что GET запросов не должны использоваться для изменения ресурсов : они предназначены для использования только для поиска информации, без побочных эффектов. Сказав это, GET является одновременно безопасным и идемпотентным . Вы можете увидеть более подробную информацию об этих понятиях в этом ответе .


Если данные должны быть отправлены в полезной нагрузке (и вы намереваетесь изменить ресурс), тогда придерживайтесь POST. Предполагая, что ваша полезная нагрузка является документом JSON, у вас будет что-то вроде:

curl -X POST http://example.org \
-H "Content-Type: application/json" \
-d '["1", "2", "3"]'
0 голосов
/ 12 апреля 2019

Если вы хотите отправить его в теле с curl , вы можете позвонить в ваш сервис следующим образом:

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

Например, в PHP вы можете читать его только для чтения.stream 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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...