Ответ 1
Это должно работать:
curl -i -H "Accept: application/json" "server:5050/a/c/getName{'param0':'pradeep'}"
используйте параметр -i вместо x.
Я пытаюсь отправить запрос "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.
Это должно работать:
curl -i -H "Accept: application/json" "server:5050/a/c/getName{'param0':'pradeep'}"
используйте параметр -i вместо x.
Если вы хотите отправить свои данные внутри тела, вам нужно сделать POST
или PUT
вместо GET
.
Похоже, вы пытаетесь отправить запрос с параметрами uri, который не связан с GET
, вы также можете поместить эти параметры на POST
, PUT
и т.д.
Запрос представляет собой необязательную часть, разделенную вопросительным знаком ( "?" ), которая содержит дополнительную идентификационную информацию, которая не является иерархической по своей природе. Синтаксис строки запроса не определяется в общих чертах, но обычно он организован как последовательность = пары, причем пары разделяются точкой с запятой или амперсандом.
Например:
curl http://server:5050/a/c/getName?param0=foo¶m1=bar
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, это не стандартный способ.
Для служб, защищенных именем пользователя и паролем, используйте следующее
curl -u admin:password -X GET http://172.16.2.125:9200 -d '{"sort":[{"lastUpdateTime":{"order":"desc"}}]}'
Try
curl -G ...
вместо
curl -X GET ...
Обычно вам не нужна эта опция. Все виды запросов GET, HEAD, POST и PUT скорее вызываются с помощью выделенных параметров командной строки.
Эта опция изменяет только фактическое слово, используемое в HTTP-запросе, оно не изменяет поведение curl. Например, если вы хотите сделать правильный запрос HEAD, использование -X HEAD будет недостаточным. Вам нужно использовать опцию -I, -head.
Если вы действительно хотите отправить запрос GET с JSON в теле, вы можете:
curl -X GET \
-H "Content-type: application/json" \
-H "Accept: application/json" \
-d '{"param0":"pradeep"}' \
"http://server:5050/a/c/getName"
Большинство современных веб-серверов принимают этот тип запроса.
Ни одно из вышеупомянутых решений не помогло мне по какой-то причине. Вот мое решение. Это довольно простой.
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.