Estou tentando enviar uma solicitação "GET" para uma API REST remota no prompt de comando via cURL como este:
curl -X GET -H "Content-type: application/json" -H "Accept: application/json" "http://server:5050/a/c/getName/{"param0":"pradeep"}"
Mas ele não retorna nenhuma saída. Tentei fazer ping no URL diretamente do navegador, sou capaz de obter resposta com êxito, não entendo o que há de errado com o comando.
Basicamente, quero definir uma solicitação "GET" para um serviço REST remoto, que me fornece dados json como resposta via curl. Alguém pode me orientar que erro estou cometendo? Eu tentei várias postagens, mas todas elas falam sobre solicitações POST e não sobre GET.
Respostas:
Isso deve funcionar:
use a opção -i em vez de x.
fonte
'server:5050/a/c/getName{"param0":"pradeep"}'
ou outro"server:5050/a/c/getName{\"param0\":\"pradeep\"}"
.Se você deseja enviar seus dados para o corpo, é necessário fazer um
POST
ou emPUT
vez deGET
.Para mim, parece que você está tentando enviar a consulta com URI parâmetros , que não está relacionado com
GET
, você também pode colocar esses parâmetros sobrePOST
,PUT
e assim por diante.Por exemplo:
fonte
Se você realmente deseja enviar a solicitação GET com JSON no corpo (digamos, para uma solicitação XHR e você sabe que o servidor suporta o processamento do corpo nas solicitações GET), você pode:
A maioria dos servidores web modernos aceita esse tipo de solicitação.
fonte
{ "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" }
Nada é recebido. Você precisa usar uma string de consulta comocurl -X GET https://httpbin.org/get?data=%7B%22param0%22%3A%22pradeep%22%7D
GET leva pares de valor de nome.
Tente algo como:
curl http://server:5050/a/c/getName/?param1=pradeep
ou
curl http://server:5050/a/c/getName?param1=pradeep
entre um REST regular deve ser algo como
curl http://server:5050/a/c/getName/pradeep
Se usar JSON na URL GET, não é uma maneira padrão.fonte
Para serviços protegidos por nome de usuário e senha, use o seguinte
fonte
Experimentar
ao invés de
Normalmente você não precisa dessa opção. Todos os tipos de solicitações GET, HEAD, POST e PUT são bastante chamados usando opções de linha de comando dedicadas.
Esta opção altera apenas a palavra real usada na solicitação HTTP, não altera o modo como a curvatura se comporta. Por exemplo, se você deseja fazer uma solicitação HEAD adequada, usar -X HEAD não será suficiente. Você precisa usar a opção -I, --head.
fonte
Nenhuma das soluções mencionadas acima funcionou para mim devido a algum motivo. Aqui está a minha solução. É bem básico.
API_ENDPOINT é o ponto de extremidade da API, por exemplo: http://127.0.0.1:80/api
-H foi usado para adicionar conteúdo do cabeçalho.
JSON_DATA é o seu corpo de solicitação, pode ser algo como :: {"data_key": "value"}. '' redor JSON_DATA são importantes.
Qualquer coisa depois de -d são os dados que você precisa enviar na solicitação GET
fonte