8751. Getting Started with ExpressExpress
Introduce how to setup web server with express in Node.js.
1. What is Express?
Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications. It is the standard web server framework for Node.js. Some notes of this posting comes from the book - Express in Action.
1.1 Hello World
A standard way to setup web server with express.
// helloworld.js
// Requires Express and puts it in a variable
var express = require("express");
// Calls express() and puts new Express application inside the app variable
var app = express();
// Sends “Hello, world!”
app.get("/", function(request, response) {
response.send("Hello, world!");
});
//Starts the Express server on port 3000 and logs that it has started
app.listen(3000, function() {
console.log("Express app started on port 3000.");
});
2. Express Core
Express has four major features:
Middleware
: An array of functions to process incoming requests.Routing
: Rules how an application’s endpoints (URIs) respond to client requests.Extensions
: Extends the request and response objects with extra methods and properties.Views
: Dynamically render HTML at server side.
3. Web Server
3.1 Node Http Module
Actually, we can create web server with node http
module without using express.
// httpserver.js
var http = require("http");
function requestHandler(request, response) {
console.log("In comes a request to: " + request.url);
response.end("Hello, world(http)!");
}
var server = http.createServer(requestHandler);
server.listen(3000, function() {
console.log("Web server(http) started on port 3000.");
});
3.2 Http + Express
// httpexpress.js
var express = require("express");
var http = require("http");
var app = express();
app.use(function(request, response) {
console.log("In comes a request to: " + request.url);
response.end("Hello, world(http+express)!");
});
http.createServer(app).listen(3000, function() {
console.log("Web server(http+express) started on port 3000.");
});
3.3 Express Only
// expressserver.js
var express = require("express");
var app = express();
app.use(function(request, response) {
console.log("In comes a request to: " + request.url);
response.end("Hello, world(express)!");
});
app.listen(3000, function() {
console.log("Web server(express) started on port 3000.");
});
4. Other Usage
1) Enable CORS
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Methods", "*");
next();
});
2) Query arguments, /search?q=javascript
app.get("/search", function(req, res) {
req.query.q == "best restaurant"
// ...
});
3) Redirect
response.redirect("/hello/world");
response.redirect("http://expressjs.com");
4) Https
// https
var express = require("express");
var https = require("https");
var fs = require("fs");
var app = express();
// ... define your app ...
var httpsOptions = {
key: fs.readFileSync("path/to/private/key.pem"),
cert: fs.readFileSync("path/to/certificate.pem")
};
https.createServer(httpsOptions, app).listen(3000);
5) Run both an HTTP server and an HTTPS server.
var express = require("express");
var http = require("http");
var https = require("https");
var fs = require("fs");
var app = express();
// ... define your app ...
var httpsOptions = {
key: fs.readFileSync("path/to/private/key.pem"),
cert: fs.readFileSync("path/to/certificate.pem")
};
http.createServer(app).listen(80);
https.createServer(httpsOptions, app).listen(443)
6) Debugging Express
To see all the internal logs used in Express, set the DEBUG environment variable to express:* when launching your app.
"debug": "DEBUG=express:* node helloworld.js"
Run ‘npm run debug’.