J'essaie d'envoyer une demande "GET" à une API REST distante à partir de l'invite de commande via cURL comme ceci:
curl -X GET -H "Content-type: application/json" -H "Accept: application/json" "http://server:5050/a/c/getName/{"param0":"pradeep"}"
Mais il ne renvoie aucune sortie. J'ai essayé de cingler l'URL directement à partir du navigateur, je suis en mesure d'obtenir une réponse avec succès, je ne comprends pas quel est le problème avec la commande.
Fondamentalement, je veux définir une requête "GET" sur un service REST distant qui me donne des données json en tant que réponse via curl. Quelqu'un peut-il me guider sur l'erreur que je fais? J'ai essayé divers articles, mais tous parlent de demandes POST et non de GET.
Réponses:
Cela devrait fonctionner:
utilisez l'option -i au lieu de x.
la source
'server:5050/a/c/getName{"param0":"pradeep"}'
ou"server:5050/a/c/getName{\"param0\":\"pradeep\"}"
.Si vous souhaitez envoyer vos données à l'intérieur du corps, vous devez faire un
POST
ouPUT
au lieu deGET
.Pour moi, il semble que vous essayez d'envoyer la requête avec des paramètres uri , qui ne sont pas liés à
GET
, vous pouvez également activer ces paramètresPOST
,PUT
et ainsi de suite.Par exemple:
la source
Si vous voulez vraiment soumettre la requête GET avec JSON dans le corps (par exemple, pour une requête XHR et vous savez que le serveur prend en charge le traitement du corps sur les requêtes GET), vous pouvez:
La plupart des serveurs Web modernes acceptent ce type de demande.
la source
{ "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" }
Rien n'est reçu. Vous devez utiliser une chaîne de requête commecurl -X GET https://httpbin.org/get?data=%7B%22param0%22%3A%22pradeep%22%7D
GET prend des paires de valeur de nom.
Essayez quelque chose comme:
curl http://server:5050/a/c/getName/?param1=pradeep
ou
curl http://server:5050/a/c/getName?param1=pradeep
btw un REST normal devrait ressembler à quelque chose comme
curl http://server:5050/a/c/getName/pradeep
Si cela prend JSON dans GET URL, ce n'est pas un moyen standard.la source
Pour les services protégés par nom d'utilisateur et mot de passe, utilisez les éléments suivants
la source
Essayer
au lieu de
Normalement, vous n'avez pas besoin de cette option. Toutes sortes de requêtes GET, HEAD, POST et PUT sont plutôt appelées en utilisant des options de ligne de commande dédiées.
Cette option ne modifie que le mot réel utilisé dans la requête HTTP, elle ne modifie pas le comportement de curl. Ainsi, par exemple, si vous voulez faire une demande HEAD correcte, utiliser -X HEAD ne suffira pas. Vous devez utiliser l'option -I, --head.
la source
Aucune des solutions mentionnées ci-dessus n'a fonctionné pour moi pour une raison quelconque. Voici ma solution. C'est assez basique.
API_ENDPOINT est votre point de terminaison API, par exemple: http://127.0.0.1:80/api
-H a été utilisé pour ajouter du contenu d'en-tête.
JSON_DATA est le corps de votre requête, il peut être quelque chose comme :: {"data_key": "value"}. '' entourant JSON_DATA sont importants.
Tout ce qui suit -d correspond aux données que vous devez envoyer dans la requête GET
la source