Skip to content

Express

Getting Started

Hello World {.row-span-2}

  • “Create project, add package.json configuration

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

    Terminal window
    $ 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

    Terminal window
    $ node index.js

    {.marker-timeline}

express -h {.row-span-2}

Terminal window
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

{.wrap-text}

Create a myapp project

Terminal window
$ 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.localsLocal variables in the application #
app.mountpathPath pattern for mounting sub-apps #

Events

:-:-
mountThe 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 {. row-span-2}

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!",
});
});