Express Middlewares

Middlewares play a very important part in the request-response lifecycle. The middlewares are placed between the Server and the response.

The mail role of middleware is to process the request in the middle before it is received by the Route Handler. …


This content originally appeared on DEV Community and was authored by ShasheeshPurohit

Middlewares play a very important part in the request-response lifecycle. The middlewares are placed between the Server and the response.

The mail role of middleware is to process the request in the middle before it is received by the Route Handler. The processing could be related to a variety of things such as :

  • Logging all requests coming to the server (Morgan is a very popular middleware used for this purpose)

  • To verify if the request has auth token or not (Passcode JS is a popular middleware for this purpose)

These are basically functions that can access request object, response object as well as the next middleware function in the application's request-response lifecycle (Next middleware function is commonly denoted by a variable named next).

If the current middleware does not end the request-response cycle, it must call next() to pass control to the next middleware function, or the request will be left hanging.

Middlewares can be of various types, depending upon the different needs that are required by the programmer in the request.

Following are some of the types of Middlewares that are available based on your requirements:

  • Application Level Middleware
  • Router Level Middleware
  • Error Handling Middleware
  • Built-in Middleware
  • Third Party Middleware

Let us take an example of an application level middleware :

var express = require('express')
var app = express()

app.use(function (req, res, next){

 console.log('Time', Date.now())
 next()

})

The above middleware is executed every time the app receives a request.

Mounting the middleare to a path:


app.use("/products/:id", function(req,res,next){
 console.log('Request Type: ', req.method)
 next()

})

The above middleware is executed every time a request is received at the "products/:id" path.

Mounting to a path for a specific request:

app.get("/products/:id", function(req,res,next){
 res.send('product')
 next()

})

The above middleware is executed every time we receive a GET request at the "products/:id" path.

Let us go in more depth about next() :

next() is used to propogate the request ahead. Calling next() is very important, if not called then it's basically a route handler and not a middleware.

One very important thing about middlewares is the order of the program or where the middleware has been used matters for the routes to effectively use it.

for eg:


app.use("/categories",categories)

app.use(middleware)

Here the requests at "/categories" route will not be processed by the middleware hence for it to work properly we should define and use it at the top of all routes where we want the middleware to process the requests.

So we can say that middlewares provide a lot of help in implementing DRY and may be used at greater advantages to take some load off the server.


This content originally appeared on DEV Community and was authored by ShasheeshPurohit


Print Share Comment Cite Upload Translate Updates
APA

ShasheeshPurohit | Sciencx (2021-07-09T18:44:08+00:00) Express Middlewares. Retrieved from https://www.scien.cx/2021/07/09/express-middlewares/

MLA
" » Express Middlewares." ShasheeshPurohit | Sciencx - Friday July 9, 2021, https://www.scien.cx/2021/07/09/express-middlewares/
HARVARD
ShasheeshPurohit | Sciencx Friday July 9, 2021 » Express Middlewares., viewed ,<https://www.scien.cx/2021/07/09/express-middlewares/>
VANCOUVER
ShasheeshPurohit | Sciencx - » Express Middlewares. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/07/09/express-middlewares/
CHICAGO
" » Express Middlewares." ShasheeshPurohit | Sciencx - Accessed . https://www.scien.cx/2021/07/09/express-middlewares/
IEEE
" » Express Middlewares." ShasheeshPurohit | Sciencx [Online]. Available: https://www.scien.cx/2021/07/09/express-middlewares/. [Accessed: ]
rf:citation
» Express Middlewares | ShasheeshPurohit | Sciencx | https://www.scien.cx/2021/07/09/express-middlewares/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.