Skip to content

Instantly share code, notes, and snippets.

@subfuzion
Last active April 24, 2025 13:48

Revisions

  1. subfuzion revised this gist Jun 12, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion curl.md
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,7 @@
    `-b, --cookie <name=data>`
    Supply cookie with request. If no `=`, then specifies the cookie file to use (see `-c`).

    `-c, --cokkie-jar <file name>`
    `-c, --cookie-jar <file name>`
    File to save response cookies to.

    `-d, --data <data>`
  2. subfuzion revised this gist Jun 12, 2016. 1 changed file with 6 additions and 1 deletion.
    7 changes: 6 additions & 1 deletion curl.md
    Original file line number Diff line number Diff line change
    @@ -43,8 +43,13 @@
    `-s, --silent`
    Silent (quiet) mode. Use with `-S` to force it to show errors.

    `-v, verbose`
    `-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.
  3. subfuzion revised this gist Jun 12, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion curl.md
    Original file line number Diff line number Diff line change
    @@ -15,7 +15,7 @@
    `-f, --fail`
    Fail silently (don't output HTML error form if returned).

    `-F, --form <name=content>
    `-F, --form <name=content>`
    Submit form data.

    `-H, --header <header>`
  4. subfuzion revised this gist Jun 12, 2016. 1 changed file with 54 additions and 0 deletions.
    54 changes: 54 additions & 0 deletions curl.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,57 @@
    ## 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, --cokkie-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 <file>. Can use `--create-dirs` in conjunction with this to create any directories
    specified in the `-o` path.

    `-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).

    `-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`
  5. subfuzion revised this gist May 13, 2016. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions curl.md
    Original file line number Diff line number Diff line change
    @@ -26,7 +26,7 @@ For sending data with POST and PUT requests, these are common `curl` options:

    ## Examples

    ##### POST application/x-www-form-urlencoded
    ### POST application/x-www-form-urlencoded

    `application/x-www-form-urlencoded` is the default:

    @@ -40,7 +40,7 @@ with a data file

    curl -d "@data.txt" -X POST http://localhost:3000/data

    ##### POST application/json
    ### POST application/json

    curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST http://localhost:3000/data

  6. subfuzion revised this gist May 13, 2016. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion curl.md
    Original file line number Diff line number Diff line change
    @@ -8,7 +8,7 @@ Many APIs will accept both formats, so if you're using `curl` at the command lin

    This gist provides examples for using both formats, including how to use sample data files in either format with your `curl` requests.

    ### curl usage
    ## curl usage

    For sending data with POST and PUT requests, these are common `curl` options:

    @@ -23,6 +23,8 @@ For sending data with POST and PUT requests, these are common `curl` options:
    * data
    * form urlencoded: `-d "param1=value1&param2=value2"` or `-d @data.txt`
    * json: `-d '{"key1":"value1", "key2":"value2"}'` or `-d @data.json`

    ## Examples

    ##### POST application/x-www-form-urlencoded

  7. subfuzion revised this gist May 13, 2016. 1 changed file with 18 additions and 2 deletions.
    20 changes: 18 additions & 2 deletions curl.md
    Original file line number Diff line number Diff line change
    @@ -2,12 +2,28 @@ When sending data via a POST or PUT request, two common formats (specified via t
    * `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 urlencoded format instead of json because
    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 urlencoded by default, so for json the `Content-Type` header must be explicitly set
    * curl will send form urlencoded by default, so for json the `Content-Type` header 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&param2=value2"` or `-d @data.txt`
    * json: `-d '{"key1":"value1", "key2":"value2"}'` or `-d @data.json`

    ##### POST application/x-www-form-urlencoded

    `application/x-www-form-urlencoded` is the default:
  8. subfuzion revised this gist May 13, 2016. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions curl.md
    Original file line number Diff line number Diff line change
    @@ -6,6 +6,7 @@ Many APIs will accept both formats, so if you're using `curl` at the command lin
    * the json format requires a bunch of extra quoting
    * curl will send urlencoded by default, so for json the `Content-Type` header 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.

    ##### POST application/x-www-form-urlencoded

  9. subfuzion revised this gist May 13, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion curl.md
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@ When sending data via a POST or PUT request, two common formats (specified via t
    * `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 urlencoded format than json because
    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 urlencoded format instead of json because
    * the json format requires a bunch of extra quoting
    * curl will send urlencoded by default, so for json the `Content-Type` header must be explicitly set

  10. subfuzion revised this gist May 13, 2016. 1 changed file with 9 additions and 0 deletions.
    9 changes: 9 additions & 0 deletions curl.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,12 @@
    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 urlencoded format than json because
    * the json format requires a bunch of extra quoting
    * curl will send urlencoded by default, so for json the `Content-Type` header must be explicitly set


    ##### POST application/x-www-form-urlencoded

    `application/x-www-form-urlencoded` is the default:
  11. @tonypujals tonypujals revised this gist Feb 26, 2016. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions curl.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    ## POST application/x-www-form-urlencoded
    ##### POST application/x-www-form-urlencoded

    `application/x-www-form-urlencoded` is the default:

    @@ -12,7 +12,7 @@ with a data file

    curl -d "@data.txt" -X POST http://localhost:3000/data

    ## POST application/json
    ##### POST application/json

    curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST http://localhost:3000/data

  12. @tonypujals tonypujals created this gist Feb 26, 2016.
    23 changes: 23 additions & 0 deletions curl.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,23 @@
    ## POST application/x-www-form-urlencoded

    `application/x-www-form-urlencoded` is the default:

    curl -d "param1=value1&param2=value2" -X POST http://localhost:3000/data

    explicit:

    curl -d "param1=value1&param2=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


    4 changes: 4 additions & 0 deletions data.json
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,4 @@
    {
    "key1":"value1",
    "key2":"value2"
    }
    1 change: 1 addition & 0 deletions data.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    param1=value1&param2=value2
    11 changes: 11 additions & 0 deletions package.json
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    {
    "name": "postdemo",
    "version": "1.0.0",
    "scripts": {
    "start": "node server.js"
    },
    "dependencies": {
    "body-parser": "^1.15.0",
    "express": "^4.13.4"
    }
    }
    12 changes: 12 additions & 0 deletions server.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,12 @@
    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);