Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

curl: no URL specified for restful api

Tags:

rest

bash

curl

I have been asked to call a restful api via Unix environment. Is there a bug in my command so i got blow issue?

I have tried looking at the curl --help but the thing that I could find that might help would be the way to pass in param key-pair. Could it be possible to give me an example how to debug such api calling?

$ 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

Cheers

like image 210
user6570681 Avatar asked Jul 25 '16 09:07

user6570681


2 Answers

You need to enclose your params in single or double quotes. e.g.

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

This is because the & operator in BASH is used to signify that the command should continue to run the in background, hence it must be quoted or escaped if you want a literal ampersand.

like image 81
ipsi Avatar answered Oct 03 '22 14:10

ipsi


I think you need to add double quotes to quote arguments:

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

P.S. On Windows you need to use double quotes, not single quotes. But in Unix, it supports both double and single quotes to quote arguments. So below cmd are fine also:

curl -d 'param1=xxx&param2=yyy' -X POST https://restfulurl/lifecycle/v1/resourcenode
like image 44
Kevin Avatar answered Oct 03 '22 12:10

Kevin