curl 사용법
01 Aug 2018 | 명령어CURL 사용방법
참고 : https://gist.github.com/subfuzion/08c5d85437d5d4f00e58
Common Options
-#, --progress-bar
        Make curl display a simple progress bar instead of the more informational standard meter.
-b, --cookie <name=data>
        Supply cookie with request. If no =, then specifies the cookie file to use (see -c).
-c, --cookie-jar <file name>
        File to save response cookies to.
-d, --data <data>
        Send specified data in POST request. Details provided below.
-f, --fail
        Fail silently (don’t output HTML error form if returned).
-F, --form <name=content>
        Submit form data.
-H, --header <header>
        Headers to supply with request.
-i, --include
        Include HTTP headers in the output.
-I, --head
        Fetch headers only.
-k, --insecure
        Allow insecure connections to succeed.
-L, --location
        Follow redirects.
-o, --output <file>
        Write output to 
-O, --remote-name
        Write output to file named like the remote file (only writes to current directory).
-s, --silent
        Silent (quiet) mode. Use with -S to force it to show errors.
-v, --verbose
        Provide more information (useful for debugging).
-w, --write-out <format>
        Make curl display information on stdout after a completed transfer. See man page for more details on
        available variables. Convenient way to force curl to append a newline to output: -w "\n" (can add
        to ~/.curlrc).
-X, --request
        The request method to use.
POST
When sending data via a POST or PUT request, two common formats (specified via the Content-Type header) are:
- application/json
- application/x-www-form-urlencoded
Many APIs will accept both formats, so if you’re using curl at the command line, it can be a bit easier to use the form urlencoded format instead of json because
- the json format requires a bunch of extra quoting
- curl will send form urlencoded by default, so for json the Content-Typeheader must be explicitly set
This gist provides examples for using both formats, including how to use sample data files in either format with your curl requests.
curl usage
For sending data with POST and PUT requests, these are common curl options:
- request type
    - -X POST
- -X PUT
 
- content type header
- -H "Content-Type: application/x-www-form-urlencoded"
- 
    -H "Content-Type: application/json"
- data
    - form urlencoded: -d "param1=value1¶m2=value2"or-d @data.txt
- json: -d '{"key1":"value1", "key2":"value2"}'or-d @data.json
 
- form urlencoded: 
Examples
POST application/x-www-form-urlencoded
application/x-www-form-urlencoded is the default:
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data
explicit:
curl -d "param1=value1¶m2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:3000/data
with a data file
curl -d "@data.txt" -X POST http://localhost:3000/data
POST application/json
curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST http://localhost:3000/data
with a data file
curl -d "@data.json" -X POST http://localhost:3000/data
data.json
{
  "key1":"value1",
  "key2":"value2"
}
data.txt
param1=value1¶m2=value2
package.json
{
  "name": "postdemo",
  "version": "1.0.0",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "body-parser": "^1.15.0",
    "express": "^4.13.4"
  }
}
server.js
var app = require('express')();
var bodyParser = require('body-parser');
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
app.post('/data', function (req, res) {
  console.log(req.body);
  res.end();
});
app.listen(3000);
