Подтвердить что ты не робот

Запрос Curl GET с параметром json

Я пытаюсь отправить запрос "GET" удаленному REST API из командной строки через cURL следующим образом:

curl -X GET -H "Content-type: application/json" -H "Accept: application/json"  "http://server:5050/a/c/getName/{"param0":"pradeep"}"

Но он не возвращает выход. Я попытался проверить URL прямо из браузера, я могу получить ответ успешно, я не понимаю, что не так с командой.

В принципе, я хочу установить запрос "GET" на удаленную службу REST, которая дает мне json-данные в виде ответа через curl. Может ли кто-нибудь вести меня, какую ошибку я делаю? Я пробовал разные сообщения, но все они говорят о POST-запросах не о GET.

4b9b3361

Ответ 1

Это должно работать:

  curl -i -H "Accept: application/json" "server:5050/a/c/getName{'param0':'pradeep'}" 

используйте параметр -i вместо x.

Ответ 2

Если вы хотите отправить свои данные внутри тела, вам нужно сделать POST или PUT вместо GET.

Похоже, вы пытаетесь отправить запрос с параметрами uri, который не связан с GET, вы также можете поместить эти параметры на POST, PUT и т.д.

Запрос представляет собой необязательную часть, разделенную вопросительным знаком ( "?" ), которая содержит дополнительную идентификационную информацию, которая не является иерархической по своей природе. Синтаксис строки запроса не определяется в общих чертах, но обычно он организован как последовательность = пары, причем пары разделяются точкой с запятой или амперсандом.

Например:

curl http://server:5050/a/c/getName?param0=foo&param1=bar

Ответ 3

GET принимает пары значений имени.

Попробуйте что-то вроде:

curl http://server:5050/a/c/getName/?param1=pradeep

или

curl http://server:5050/a/c/getName?param1=pradeep

btw обычный REST должен выглядеть примерно так:

curl http://server:5050/a/c/getName/pradeep Если для GET URL требуется JSON, это не стандартный способ.

Ответ 4

Для служб, защищенных именем пользователя и паролем, используйте следующее

curl -u admin:password -X GET http://172.16.2.125:9200 -d '{"sort":[{"lastUpdateTime":{"order":"desc"}}]}'

Ответ 5

Try

curl -G ...

вместо

curl -X GET ...

Обычно вам не нужна эта опция. Все виды запросов GET, HEAD, POST и PUT скорее вызываются с помощью выделенных параметров командной строки.

Эта опция изменяет только фактическое слово, используемое в HTTP-запросе, оно не изменяет поведение curl. Например, если вы хотите сделать правильный запрос HEAD, использование -X HEAD будет недостаточным. Вам нужно использовать опцию -I, -head.

Ответ 6

Если вы действительно хотите отправить запрос GET с JSON в теле, вы можете:

curl -X GET \
  -H "Content-type: application/json" \
  -H "Accept: application/json" \
  -d '{"param0":"pradeep"}' \
  "http://server:5050/a/c/getName"

Большинство современных веб-серверов принимают этот тип запроса.

Ответ 7

Ни одно из вышеупомянутых решений не помогло мне по какой-то причине. Вот мое решение. Это довольно простой.

curl -X GET API_ENDPOINT -H 'Content-Type: application/json' -d 'JSON_DATA'

API_ENDPOINT - это ваша конечная точка API, например: http://127.0.0.1:80/api

-H используется для добавления содержимого заголовка.

JSON_DATA - это ваше тело запроса, это может быть что-то вроде :: {"data_key": "value"}. '' окружающие JSON_DATA важны.

Все, что после -d, - это данные, которые необходимо отправить в запросе GET.