J'essaie d'envoyer une requête "GET" à une API REST distante à partir d'une 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 faire un ping sur l'URL directement depuis le navigateur, je peux obtenir une réponse avec succès, je ne comprends pas ce qui ne va pas avec la commande.
En gros, je veux définir une requête "GET" à un service distant REST qui me donne des données JSON en réponse via curl. Quelqu'un peut-il me guider quelle erreur je fais? J'ai essayé divers articles, mais ils parlent tous de POST demandes non de GET.
Cela devrait fonctionner:
curl -i -H "Accept: application/json" "server:5050/a/c/getName{'param0':'pradeep'}"
option utilisateur -i au lieu de x.
Si vous souhaitez envoyer vos données à l'intérieur du corps, vous devez alors créer un POST
ou PUT
au lieu de GET
.
Pour moi, on dirait que vous essayez d'envoyer le requête avec les paramètres uri , qui n'est pas lié à GET
, vous pouvez aussi mettre ces paramètres sur POST
, PUT
et ainsi de suite.
La requête est une partie facultative, séparée par un point d'interrogation ("?"), Contenant des informations d'identification supplémentaires qui ne sont pas de nature hiérarchique. La syntaxe de la chaîne de requête n'est pas définie de manière générique, mais elle est généralement organisée comme une séquence de paires =, les paires étant séparées par un point-virgule ou une esperluette.
Par exemple:
curl http://server:5050/a/c/getName?param0=foo¶m1=bar
GET prend des paires nom/valeur.
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 habituel REST devrait ressembler à quelque chose comme
curl http://server:5050/a/c/getName/pradeep
S'il prend JSON dans l'URL GET, ce n'est pas une méthode standard.
Pour les services protégés par nom d'utilisateur et mot de passe, utilisez les éléments suivants:
curl -u admin:password -X GET http://172.16.2.125:9200 -d '{"sort":[{"lastUpdateTime":{"order":"desc"}}]}'
Essayer
curl -G ...
au lieu de
curl -X GET ...
Normalement, vous n'avez pas besoin de cette option. Toutes sortes de requêtes GET, HEAD, POST et PUT sont plutôt appelées à l'aide d'options de ligne de commande dédiées.
Cette option modifie uniquement le mot réel utilisé dans la requête HTTP, elle ne modifie pas le comportement de curl. Ainsi, par exemple, si vous souhaitez effectuer une demande HEAD appropriée, l'utilisation de -X HEAD ne suffira pas. Vous devez utiliser l'option -I, --head.
Si vous voulez vraiment soumettre la demande GET avec JSON dans le corps, vous pouvez:
curl -X GET \
-H "Content-type: application/json" \
-H "Accept: application/json" \
-d '{"param0":"pradeep"}' \
"http://server:5050/a/c/getName"
La plupart des serveurs Web modernes acceptent ce type de demande.
Aucune des solutions mentionnées ci-dessus n'a fonctionné pour moi pour une raison quelconque. Voici ma solution. C'est assez basique.
curl -X GET API_ENDPOINT - H 'Type de contenu: application/json ' - d ' JSON_DATA '
API_ENDPOINT est votre point de terminaison d'api, par exemple: http://127.0.0.1:80/api
- H a été utilisé pour ajouter un contenu d'en-tête.
JSON_DATA est le corps de votre demande. Il peut s'agir de quelque chose comme :: {"data_key": "value"}. '' entourant JSON_DATA est important.
Tout ce qui suit - d correspond aux données que vous devez envoyer dans la demande GET.