Series: Introduction to the MEAN Stack
Today I present to you the Framework Express , which is the most watched module at npm. I also explain to you the concept of a route.
Express relies on Connect and is also developed by TJ Holowaychuk. It expands Connect with additional middleware and an API for routing . In this case, the term routing is used to assign URLs (and HTTP methods) to a middleware. Thus, different areas of a web page can use different middleware. If a certain area of a website is to be password-protected, for example, a corresponding authentication medium can be used explicitly only for this area.
The previous examples of the HTTP and file server are now combined with Express. In a new project folder you must first install Express:
1
|
$ npm install express
|
At the time of writing is the latest version of Express 3.4.0. Here is the code for the server in a new file server.js
:
1
2 3 4 5 6 7 |
var express = require ( ‘express’ ) ;
express ( ) . get ( ‘/’ , function ( req , res ) { res. send ( ‘Hello World’ ) ; } ) . use ( express. static ( __dirname ) ) . listen ( 1337 , ‘127.0.0.1’ ) ; |
The server code is almost identical to the example with Connect. Express takes any middleware from Connect, so it can be used instead . New is the following section:express.static
connect.static
1
2 3 |
, get ( ‘/’ , function ( req , res ) {
res. send ( ‘HelloWorld’ ) ; } ) |
This section reminds you of the first code example with the http
module. Only the function get
is new. It is similar use
but takes a route as the first parameter in addition to the middleware as the second parameter. In this case, the route is the URL of the root: /
. However, the route could be any string other than a URL or a regular expression. This get
is the corresponding HTTP method, so this route and these middleware will only be performed on a GET
request for the URL /
. Similarly, there is for each HTTP method a corresponding function from Express to set specific routes and middleware for this: , , etc.express.post
express.delete
If you enter http://127.0.0.1:1337/ into the browser, you do not get the error message “Can not GET /”, but a “Hello World”. (Note: If you GET
call a URL through the browser, a query is always performed by default .) However , you can get the file via http://127.0.0.1:1337/server.jsserver.js
.
But what if a route already exists for the URL http://127.0.0.1:1337/server.js ? We can easily test this with a slightly modified example:
1
2 3 4 5 6 7 8 9 10 |
var express = require ( ‘express’ ) ;
express ( ) . get ( ‘/’ , function ( req , res ) { res. send ( ‘Hello World’ ) ; } ) . get ( ‘/server.js’ , function ( req , res ) { res. send ( ‘This should be the server.js!’ ) ; } ) , use ( express. static ( __dirname ) ) . listen ( 1337 , ‘127.0.0.1’ ) ; |
If you now call http://127.0.0.1:1337/server.js , you get the message “This should be the server.js!” Instead of the contents of the file server.js
. This is the order in which the middleware was set! Our own middleware for the route /server.js
was defined before the static file server and is therefore first executed. It depends on the middleware whether subsequent middleware is still called or not. In this case, we terminate with the method in our own middleware to call up additional middleware. In this way, one could, for example, program an authentication medium that would block unauthenticated users and allow authenticated users to pass through static file servers.res.send
An example of a real and complex website, which is based on Express, is MySpace .
These basics are sufficient for the first walking tests in Node. In the next article, I will first explain to you MongoDB.
0 Comments