web-dev-qa-db-fra.com

curl: aucune URL spécifiée pour une api reposante

On m'a demandé d'appeler une api reposante via l'environnement Unix. Y a-t-il un bug dans ma commande, donc j'ai un problème de coup?

J'ai essayé de regarder le curl --help mais la chose que je pourrais trouver qui pourrait aider serait le moyen de passer la paire de clés param. Serait-il possible de me donner un exemple sur la façon de déboguer un tel appel api?

$ curl -d param1=xxx&param2=yyy -X POST https://restful_api_path/lifecycle/v1/resource_node
[1]     10276
[2]     10277
-ksh: -X: not found [No such file or directory]
[2] +  Done                    curl -d param1=xxx&param2=yyy -X POST https://restful_api_path/lifecycle/v1/resource_node
$ curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information

À votre santé

8
user6570681

Vous devez mettre vos paramètres entre guillemets simples ou doubles. par exemple.

curl -d 'param1=xxx&param2=yyy' -X POST https://restful_api_path/lifecycle/v1/resource_node

Cela est dû au fait que l'opérateur & Dans BASH est utilisé pour signifier que la commande doit continuer à exécuter l'arrière-plan, elle doit donc être citée ou échappée si vous souhaitez une esperluette littérale.

9
ipsi

Je pense que vous devez ajouter des guillemets doubles pour citer des arguments:

curl -d "param1=xxx&param2=yyy" -X POST https://restfulurl/lifecycle/v1/resourcenode

P.S. Sous Windows, vous devez utiliser des guillemets doubles, pas des guillemets simples. Mais sous Unix, il prend en charge les guillemets doubles et simples pour citer des arguments. Donc, en dessous de cmd, c'est bien aussi:

curl -d 'param1=xxx&param2=yyy' -X POST https://restfulurl/lifecycle/v1/resourcenode
4
Kevin Li