rest — GET-запрос Curl с параметром json
спросил
Изменено 1 год, 6 месяцев назад
Просмотрено 597 тысяч раз
Я пытаюсь отправить запрос «GET» на удаленный REST API из командной строки через cURL следующим образом:
curl -X GET \ -H "Тип содержимого: приложение/json" \ -H "Принять: приложение/json" \ "http://сервер:5050/a/c/getName/{"param0":"pradeep"}"
Но он ничего не возвращает. Я попытался пропинговать URL-адрес прямо из браузера, я могу успешно получить ответ, я не понимаю, что не так с командой.
В основном я хочу установить запрос «GET» к удаленной службе REST, которая дает мне данные json в качестве ответа через curl. Может ли кто-нибудь указать мне, какую ошибку я делаю? Я пробовал разные сообщения, но все они говорят о POST-запросах, а не о GET.
- json
- остальное
- завиток
Это должно работать:
curl -i -H "Accept: application/json" 'server:5050/a/c/getName{"param0":"pradeep"}'
используйте опцию -i вместо x.
2Если вы действительно хотите отправить запрос GET с JSON в теле (скажем, для запроса XHR, и вы знаете, что сервер поддерживает обработку тела в запросах GET), вы можете:
curl -X GET \ -H "Тип содержимого: приложение/json" \ -H "Принять: приложение/json" \ -d '{"param0":"прадип"}' \ "http://сервер:5050/a/c/getName"
Большинство современных веб-серверов принимают этот тип запроса.
Если вы хотите отправить свои данные внутри тела, то вам нужно сделать POST
или PUT
вместо GET
.
Для меня это выглядит так, как будто вы пытаетесь отправить запрос с параметрами uri, которые не связаны с GET
, вы также можете поставить эти параметры на POST
, PUT
и так далее.
Запрос представляет собой необязательную часть, разделенную знаком вопроса («?»), которая содержит дополнительную идентификационную информацию, не имеющую иерархического характера. Синтаксис строки запроса не имеет общего определения, но обычно он организован как последовательность пар =, где пары разделяются точкой с запятой или амперсандом.
Например:
curl http://server:5050/a/c/getName?param0=foo¶m1=bar1
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
Попробуйте
завиток -G ...
вместо
завиток -X ПОЛУЧИТЬ. ..
Обычно эта опция не требуется. Все виды запросов GET, HEAD, POST и PUT вызываются вместо этого с помощью специальных параметров командной строки.
Этот параметр изменяет только фактическое слово, используемое в HTTP-запросе, но не влияет на поведение curl. Так, например, если вы хотите сделать правильный запрос HEAD, использования -X HEAD будет недостаточно. Вам нужно использовать опцию -I, —head.
Для служб, защищенных именем пользователя и паролем, используйте следующие
curl -u admin:password -X GET http://172.16.2.125:9200 -d '{"sort":[{"lastUpdateTime":{"order":"desc"}}]}'2
Ни одно из вышеупомянутых решений не помогло мне по какой-то причине. Вот мое решение. Это довольно просто.
curl -X GET API_ENDPOINT -H ‘Тип содержимого: application/json’ -d ‘ JSON_DATA ‘
API_ENDPOINT — это конечная точка вашего API, например: http://127.
-H используется для добавления содержимого заголовка.
JSON_DATA — это тело вашего запроса, это может быть что-то вроде :: {«data_key»: «value»} . ‘ ‘ окружающих JSON_DATA важны.
Все, что следует после -d , это данные, которые вам нужно отправить в запросе GET
метод http — curl -GET и -X GET
спросил
Изменено 2 года, 6 месяцев назад
Просмотрено 255 тысяч раз
Curl предлагает ряд различных вызовов методов http с префиксом X, но также предлагает те же методы без префикса. Я пробовал оба, и я не могу понять разницу. Может ли кто-нибудь объяснить мне быстро, чем отличаются эти две операции?
- curl
- http-method
По умолчанию вы используете curl без явного указания, какой метод запроса использовать. Если вы просто передадите URL-адрес HTTP, например curl http://example.com
, он будет использовать GET. Если вы используете -d
или -F
-I
вызовет HEAD, а -T
сделает его PUT. Если по какой-либо причине вас не устраивают эти варианты по умолчанию, которые делает за вас curl, вы можете переопределить эти методы запроса, указав -X [НЕЗАВИСИМОЕ]
. Таким образом, вы можете, например, отправить DELETE, выполнив curl -X DELETE [URL]
.
Таким образом, бессмысленно выполнять curl -X GET [URL]
, так как GET все равно будет использоваться. В том же духе бессмысленно делать curl -X POST -d data [URL]...
Но вы можете сделать забавный и довольно редкий запрос, который отправляет тело запроса в запросе GET с чем-то вроде
.
Копание глубже
завиток -GET
(с одним тире) просто не подходит для этой цели. Это эквивалентно указанию параметров -G
, -E
и -T
, и это сделает что-то совершенно другое.
Существует также вариант скручивания под названием --get
, чтобы не путать ни с одним из них. Это длинная форма -G, которая используется для преобразования данных, указанных с помощью -d
, в запрос GET вместо POST.
(впоследствии я использовал свой собственный ответ здесь, чтобы заполнить часто задаваемые вопросы по curl, чтобы покрыть это.)
Предупреждения
Современные версии curl будут информировать пользователей об этом ненужном и потенциально вредном использовании -X при включенном подробном режиме ( -v
) — чтобы пользователи были осведомлены. Дальнейшее объяснение и мотивация в этом сообщении в блоге.
-G преобразует тело POST + в запрос GET +
Вы можете попросить curl преобразовать набор параметров -d
и вместо отправки их в тело запроса с помощью POST поместить их в конец URL-адреса строку запроса и выполнить GET с использованием `-G. Вот так:
curl -d name=daniel -d grumpy=yes -G https://example.com/5
Использование -X [WHATEVER]
просто изменяет строку метода запроса , используемую в HTTP-запросе. Это легче понять с помощью двух примеров — одного с -X [WHATEVER]
# curl -XPANTS -o nul -v http://neverssl.com/ * Подключен к neverssl.com (13.224.86.126) порт 80 (#0) > БРЮКИ / HTTP/1.1 > Хост: neverssl.com > Пользовательский агент: curl/7.42.0 > Принять: */* # curl -o nul -v http://neverssl.com/ * Подключен к neverssl.com (13.33.50.167) порт 80 (#0) > ПОЛУЧИТЬ/HTTP/1.1 > Хост: neverssl.com > Пользовательский агент: curl/7.42.0 > Принять: */*
-X [ваш метод]
X позволяет переопределить значение по умолчанию «Получить»
** нижний регистр x
исправлен на верхний X
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью GoogleОпубликовать как гость
Электронная почтаТребуется, но не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.