Express.js
Updated: 2020-09-27
Route
In app.js
var routes = require("./routes");
app.get("/loadData/:name", routes.loadData);
In routes/index.js
exports.loadData = function (req, res) {
console.log(req.route.params.name);
// or
console.log(req.params.name);
};
In browser
http://127.0.0.1:3000/loaddata/foo
In terminal
foo
Enable CORS
If you see error like:
XMLHttpRequest cannot load <some_url>. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '<origin_url>' is therefore not allowed access.
Add the followings to the app.js
:
app.all("*", function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
Req Lookup
Params
In Express 4:
Params are stored as
req.params.<param_name>
E.g. in app.js
:
app.get('/foo/:name', ...)
A request to /foo/bar
will generate
req.params.name == "bar";
File Upload
Uploaded files
req.files.<file_name>.path
Data Upload
Uploaded data
req.body.<data_name>
req.files
and req.body
are available for POST requests, but not GET requests
Serve Route Based on File Structure
To serve multi-player routes and map to files in arbitrary folder hierarchy, e.g.
http://www.example.com/page/a
topartial/a.html
http://www.example.com/page/b/c
topartial/b/c.html
http://www.example.com/page/d/e/f
topartial/d/e/f.html
app.route("/page/:name").get(function (req, res) {
res.render("partials/" + req.params.name);
});
Multer
File Upload
https://github.com/expressjs/multer
Auto reload in development
Use Automon:
$ npm install -g nodemon
Then use nodemon
instead of node
when starting the app:
$ nodemon app.js