Express Cheatsheet

A quick reference cheatsheet for Express, a flexible and streamlined web framework for Node.js

Getting Started

Hello World

  • "Create project, add package.json configuration

    $ mkdir myapp # create directory
    $ cd myapp    # enter the directory
    $ npm init -y # Initialize a configuration
  • Install dependencies

    $ npm install express
  • Entry file index.js add code:

    const express = require("express");
    const app = express();
    const port = 3000;
    app.get("/", (req, res) => {
      res.send("Hello World!");
    });
    app.listen(port, () => {
      console.log(`Listening port on ${port}`);
    });
  • Run the application using the following command

    $ node index.js

express -h

Usage: express [options] [dir]
Options:
  -h, --help output usage information
      --version output version number
  -e, --ejs add ejs engine support
      --hbs add hbs engine support
      --pug add pug engine support
  -H, --hogan add hogan.js engine support
      --no-view No view engine generated
  -v, --view <engine> add view <engine> support (ejs|hbs|hjs|jade|pug|twig|vash) (default jade)
  -c, --css <engine> add stylesheet <engine> support (less|stylus|compass|sass) (default css)
      --git add .gitignore
  -f, --force force non-empty directories

Create a myapp project

$ express --view=pug myapp
# run the application
$ DEBUG=myapp:*npm start

express()

express.json()
express.raw()
express.Router()
express.static()
express.text()
express.urlencoded()

Router

router.all()
router.METHOD()
router.param()
router.route()
router.use()

Application

var express = require("express");
var app = express();

console.dir(app.locals.title);
//=> 'My App'
console.dir(app.locals.email);
//=> 'me@myapp.com'

Attribute

app.locals
Local variables in the application #
app.mountpath
Path pattern for mounting sub-apps #

Events

mount
The child application is mounted on the parent application, and the event is triggered on the child application #

Method

app.all()
app.delete()
app.disable()
app.disabled()
app.enable()
app.enabled()
app.engine()
app.get(name)
app.get(path, callback)
app.listen()
app.METHOD()
app.param()
app.path()
app.post()
app.put()
app.render()
app.route()
app.set()
app.use()

Request

Attribute

req.app
req.baseUrl
req.body
req.cookies
req.fresh
req.hostname
req.ip
req.ips
req.method
req.originalUrl
req.params
req.path
req.protocol
req.query
req.route
req.secure
req.signedCookies
req.stale
req.subdomains
req.xhr

Method

req.accepts()
req.acceptsCharsets()
req.acceptsEncodings()
req.acceptsLanguages()
req.get()
Get HTTP request header fields #
req.is()
req.param()
req.range()

Response

app.get("/", function (req, res) {
  console.dir(res.headersSent); //false
  res.send("OK");
  console.dir(res.headersSent); //true
});

Attribute

res.app
res.headersSent
res.locals

Method

res.append()
res.attachment()
res.cookie()
res.clearCookie()
res.download()
Prompt for files to download #
res.end()
end the response process #
res.format()
res.get()
res.json()
Send JSON response #
res.jsonp()
Send a response with JSONP support #
res.links()
res.location()
res.redirect()
Redirect request #
res.render()
render view template #
res.send()
Send various types of responses #
res.sendFile()
Send a file as an octet stream #
res.sendStatus()
res.set()
res.status()
res.type()
res.vary()

Example

Router

Called for any request passed to this router

router.use(function (req, res, next) {
  //.. some logic here .. like any other middleware
  next();
});

will handle any request ending in /events

//depends on where the router "use()"
router.get("/events", (req, res, next) => {
  //..
});

Response

The res object represents the HTTP response sent by the Express application when it receives an HTTP request

app.get("/user/:id", (req, res) => {
  res.send("user" + req.params.id);
});

Request

A req object represents an HTTP request and has properties for the request query string, parameters, body, HTTP headers, etc.

app.get("/user/:id", (req, res) => {
  res.send("user" + req.params.id);
});

res. end()

res.end();
res.status(404).end();

End the response process. This method actually comes from the Node core, specifically the response.end() method of http.ServerResponse

res.json([body])

res.json(null);
res.json({ user: "tobi" });
res.status(500).json({ error: "message" });

app.all

app.all("/secret", function (req, res, next) {
  console.log("access secret section...");
  next(); // Pass control to the next handler
});

app.delete

app.delete("/", function (req, res) {
  res.send("DELETE request to homepage");
});

app.disable(name)

app.disable("trust proxy");
app.get("trust proxy");
// => false

app.disabled(name)

app.disabled("trust proxy");
// => true

app.enable("trust proxy");
app.disabled("trust proxy");
// => false

app.engine(ext, callback)

var engines = require("consolidate");

app.engine("haml", engines.haml);
app.engine("html", engines.hogan);

app.listen([port[, host[, backlog]]][, callback])

var express = require("express");

var app = express();
app.listen(3000);

Routing

const express = require("express");
const app = express();

//Respond to "hello world" when making a GET request to the homepage
app.get("/", (req, res) => {
  res.send("hello world");
});
// GET method routing
app.get("/", (req, res) => {
  res.send("GET request to the homepage");
});

// POST method routing
app.post("/", (req, res) => {
  res.send("POST request to the homepage");
});

Middleware

function logOriginalUrl(req, res, next) {
  console.log("ReqURL:", req.originalUrl);
  next();
}

function logMethod(req, res, next) {
  console.log("Request Type:", req.method);
  next();
}

const log = [logOriginalUrl, logMethod];

app.get("/user/:id", log, (req, res, next) => {
  res.send("User Info");
});

Using templates

app.set("view engine", "pug");

Create a Pug template file named index.pug in the views directory with the following content

html
  the head
    title= title
  the body
    h1=message

Create a route to render the index.pug file. If the view engine property is not set, the extension of the view file must be specified

app.get("/", (req, res) => {
  res.render("index", {
    title: "Hey",
    message: "Hello there!",
  });
});

Adapted from Fechin/referenceGPL-3.0 licenseMarkdown sourceChanges and attribution