The Nodejs Web Server: The Ways to Build it

A Web Server is a software application that handles HTTP requests sent by the HTTP client, such as web browsers, and in turn, it produces the web page to the client. Each Web server delivers HTML documents along with images, sheets, and scripts.

Most of the web servers support server-side scripts. It uses scripting languages that assign a task to an application server to retrieve data from a database. These servers perform some complex logic and then sends a response to the HTTP client through the Web server.

What Is Nodejs Web Server?

Nodejs framework is widely used to create server-side applications. This framework enables creating a web server that delivers web content to the users by requesting the web server.

There are a variety of modules available in Nodejs such as the “HTTP” and “request” module. These modules help in processing server related requests in allocated web server space. Let’s see how to create a basic web server application using Nodejs in this blog.

Read: 5 ways to make HTTP requests in Nodejs

Web Application Architecture

A web application architecture broadly classified into 4 layers:

  • Client Layer — The Client layer includes web browsers, mobile applications that make HTTP requests to the web server.
  • Server Layer: The Server layer consists of a web server that can intercept the request made by clients and pass the immediate response.
  • Business Layer: The business layer communicates with the data layer through a database. It contains an application server utilized by a web server to process the requests.
  • Data Layer: This layer acts as the source of data or the database.

Read: The perfect architecture of Nodejs: How it works technically?

Create A Nodejs Web Server

To create a web server using Nodejs, it processes the incoming requests asynchronously,

The following example is to create a Nodejs web server contained in server.js file in its directory:

var http = require('http'); // 1 - Import Nodejs core module var server = http.createServer(function (req, res) { // 2 -creating server    //handle incomming requests here.. }); server.listen(5000); //3 - listen for any incoming requests console.log('Nodejs web server at port 5000')

Import the HTTP module using require() function in the above example. This HTTP module considered to be a core module of Nodejs. So the need to install it using Node Package Manager(NPM).

Taking the further step to call createServer() method of HTTP and specify the callback function with the request that arrived from the client

In the end, call listen()method of server object which was returned from createServer() method with a port number.

Now run the above web server by writing node server.js command in command prompt and it will display a message as shown below.

C: \> node server.jsNodejs web server at port 5000 is running

This is how you create a Nodejs web server using a programming method. Now, the following steps help you to handle HTTP requests and send the response in the Nodejs web server.

Handle HTTP Request

The http.createServer() method includes both the request and response parameters generated by Nodejs. To get information about the current HTTP request, use the request object.

Such HTTP information contains URL, request header, and data. The following example illustrates handling HTTP requests and responses in the Nodejs web server.

var http = require('http'); // Import Nodejs core module var server = http.createServer(function (req, res) { // create web server    if (req.url == '/') { // check the URL of the current request // set response header res.writeHead(200, { 'Content-Type': 'text/html' }); / set response content res.write('<html><body><p>This is home Page.</p></body></html>'); res.end();}else if (req.url == "/student") {res.writeHead(200, { 'Content-Type': 'text/html' }); res.write('<html><body><p>This is student Page.</p></body></html>'); res.end();} else if (req.url == "/admin") {res.writeHead(200, { 'Content-Type': 'text/html' }); res.write('<html><body><p>This is admin Page.</p></body></html>'); res.end(); } else res.end('Invalid Request!'); }); server.listen(5000); //6 - listen for any incoming requests console.log('Nodejs web server at port 5000')

From the above scenario, req.url is used to check the URL of the current request. and sends the response.

To send a response, set the response header using writeHead() method and then write a string as a response body using write() method.

Finally, the Nodejs web server sends the response using the end() method as requested by the client.

Now just run the above web server as shown below:

C: \> node server.jsNodejs web server at port 5000

To test the sample code, use the command-line program curl, a preinstalled program that comes with most Mac and Linux machines.

Curl  -i http://localhost:5000

After the completion of the above steps, now you could actually see the following response:

HTTP/1.1 200 OKContent-Type: text/plainDate: Wed, 22 Jan 05:36:05 GMTConnection: keep-aliveThis is home page

For Windows users, use http://localhost:5000 in your browser and see the following result.

http://localhost:5000This is Home page

In the same way, use http://localhost:5000/student in your browser and see the following result.

http://localhost:5000/studentThis is student page

It shows “Invalid Request” for all other requests other than the above URLs.

Send JSON Response

The following example illustrates how to serve the JSON response from the Nodejs web server.

var http = require('http');var server = http.createServer(function (req, res) { if (req.url == '/data') 
{ //check the URL of the current request res.writeHead(200,
{ 'Content-Type': 'application/json' }); res.write(JSON.stringify({ message: "Hello World"}));res.end();}}); server.listen(5000); console.log('Nodejs web server at port 5000')

In this simple way, you can create a Nodejs web server that servers with different responses for different functions.

CONCLUSION

In Nodejs, we have used Http.createServer() method of HTTP Built-in Nodejs module to create HTTP Web Server that responds to the requests made at a port.

If you’re planning to build a Nodejs web application, We happily build for you. Contact us for more details regarding web development.

Written by

Ecommerce consultant

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store