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

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

0
eugene 12 Апр 2019 в 12:55

2 ответа

Лучший ответ

Как только вы намереваетесь выполнить 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"]'
2
cassiomolin 12 Апр 2019 в 11:02

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

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

Например, в PHP вы можете прочитать его из потока только для чтения php: // input

<?php
$get_body = file_get_contents('php://input');

Лучшим способом было бы назначить массив параметру, например Икс:

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
)
-1
Markus D. 12 Апр 2019 в 10:26