Я пытаюсь отправить запрос «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.
Ответы:
Это должно работать:
используйте параметр -i вместо x.
источник
'server:5050/a/c/getName{"param0":"pradeep"}'
либо"server:5050/a/c/getName{\"param0\":\"pradeep\"}"
.Если вы хотите отправить свои данные внутри тела, вам нужно создать
POST
илиPUT
вместоGET
.Для меня, это выглядит , как вы пытаетесь отправить запрос с Ури параметрами , которые не связанные с
GET
, вы также можете поместить эти параметры наPOST
,PUT
и так далее.Например:
источник
Если вы действительно хотите отправить запрос GET с JSON в теле (скажем, для запроса XHR, и вы знаете, что сервер поддерживает обработку тела по запросам GET), вы можете:
Большинство современных веб-серверов принимают этот тип запросов.
источник
{ "args": {}, "headers": { "Accept": "application/json", "Content-Length": "20", "Content-Type": "application/json", "Host": "httpbin.org", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:57.0) Gecko/20100101 Firefox/57.0" }, "origin": "27.94.235.50, 27.94.235.50", "url": "https://httpbin.org/get" }
Ничего не получено. Вам нужно использовать строку запроса, напримерcurl -X GET https://httpbin.org/get?data=%7B%22param0%22%3A%22pradeep%22%7D
GET принимает пары имя-значение.
Попробуйте что-нибудь вроде:
curl http://server:5050/a/c/getName/?param1=pradeep
или
curl http://server:5050/a/c/getName?param1=pradeep
кстати, обычный REST должен выглядеть примерно так
curl http://server:5050/a/c/getName/pradeep
Если в URL-адресе GET используется JSON, это не стандартный способ.источник
Для служб, защищенных именем пользователя и паролем, используйте следующие
источник
Пытаться
вместо того
Обычно эта опция вам не нужна. Все виды запросов GET, HEAD, POST и PUT скорее вызываются с помощью специальных параметров командной строки.
Этот параметр изменяет только фактическое слово, используемое в HTTP-запросе, но не влияет на поведение curl. Так, например, если вы хотите сделать правильный запрос HEAD, использования -X HEAD будет недостаточно. Вам нужно использовать параметр -I, --head.
источник
Ни одно из вышеупомянутых решений не помогло мне по какой-то причине. Вот мое решение. Это довольно просто.
API_ENDPOINT - это ваша конечная точка api, например: http://127.0.0.1:80/api
-H был использован для добавления содержимого заголовка.
JSON_DATA - это тело вашего запроса, это может быть что-то вроде :: {"data_key": "value"}. '' окружающие JSON_DATA важны.
Все, что находится после -d, - это данные, которые вам нужно отправить в запросе GET.
источник