Saturday, February 28, 2015

Create a simple server using Node and Express


Recently I got selected to build the website of the Techno-Cult Festival, Advaita, of my college. My role was to develop backend and handle database of the website. I was new to backend development. I was thinking to use PHP or Python which are suitable for this task. Then why Node? Answer is simple, Node is very simple to learn and the best thing is, its Javascript (Universal language for web development). Community is very dynamic plus lots of extensions and modules are developed daily. You can get modules available to do alomst anything using node.

Basic Node Server
Lets see a basic example, Node server without any module.

var http = require("http");
http.createServer(function (request, response) {
    response.writeHead(200, {
        'Content-Type': 'text/plain'
    });
    response.write('This is a response for a request')
    response.end();
}).listen(8100);

Node is javascript but on the server side... :-)
This code implements a simple web server which responds to get requests with a message. The require statement is a feature of Node which helps to add modules to the app.


Node Server with Express Module
We just got to know how simple it is to build a server. But, there are many modules available that provide an extra bit of abstraction to the app and help easy to implement something. Like passport, Express, Express router etc. They just decrease our work as well as lines of code. So, we are gonna use one such module, Express. Why Express? Because it provides:
  • Routing Mechanisms using express-router
  • Support for view engines like Jade, Ejs
  • Basic Authentication
  • Cookies manipulation
  • many more

var express = require("express");
var app = express();
 
app.get("/", function(req, res) {
    res.sendfile('index.html')
});
 
app.post("/login", function(req, res) { 
    //Some server side logic to handle this
    res.send("OK");
});
 
app.get(/fileDownload, function(req, res){ 
    res.sendfile( __dirname + "file.txt"); 
});
 
var port = process.env.PORT || 8100;
app.listen(port, function() {
    console.log("Listening on " + port);
});

The first thing we have done is to import the express module using the require statement and then we use this modules object (app) to define get, post methods, routing and every task we need to implement using express. 
The syntax is too easy. We have to pass the link which matches the route and a function which is called when the link is matched. The function gives us access to the request and response wrappers. 



Reference: ExpressJS