cURL is a program for making HTTP request, f. e. accessing a web site or calling a web service.
In Basic Auth the username and password Base64 encoded and added to the HTTP headers. cURL can do this easily with an option.
curl --user my_user:my_pass http://localhost/my/service
When using web services one can add a request for a specific format for the response using HTTP headers.
curl http://localhost/my/service -H "Accept: application/json"
curl -d "name=value&another=value" http://localhost/my/service
Query parameter are passed in the url by adding key/value pairs after the ? sign in the url. Example:
If this url is used with curl than the parameters start and rows are being dropped and the curl process is executed in the background. Why? Because the first & tells the shell to execute the command in the background. The shell won't recognize it as part of the url.
Solution: Use double quotes.
Instead of passing the post data from the command line it can also be read from a file:
curl http://localhost/resource -X POST -d @data.json -H "Content-Type: application/json"