Skip to content

Instantly share code, notes, and snippets.

@tigerfsh
Forked from subfuzion/curl.md
Created June 28, 2021 10:11
Show Gist options
  • Save tigerfsh/8f1d58ac88b39bbdd2f9d522e1829f18 to your computer and use it in GitHub Desktop.
Save tigerfsh/8f1d58ac88b39bbdd2f9d522e1829f18 to your computer and use it in GitHub Desktop.
curl POST examples

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:

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
{
"key1":"value1",
"key2":"value2"
}
param1=value1&param2=value2
{
"name": "postdemo",
"version": "1.0.0",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"body-parser": "^1.15.0",
"express": "^4.13.4"
}
}
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);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment