2

In a Node.js application based on express I load the compression middleware this way:

const express = require("express");
const compression = require("compression");
const app = express();
app.use(compression());

If I add a router to manage API requests should I load again compression in the router or its responses are already compressed?

const router = express.Router();
router.use(compression()); // Is this needed or not?

router.get(...); // and all other API methods
app.use("/api", router);

app.use("/", express.static("./pages"));

Thanks for clarifying!

SiliconValley
  • 1,465
  • 17
  • 30

2 Answers2

5

No, you don't have to load the compression middleware into specific routes if you load it into your app.

  • Any middleware you load into your app will apply to all routes. These are application-level middleware.

    app.use(middleware)

  • Any middleware you use for specific routes will not apply for any other route. These are router-level middleware.

    router.get('/route', middleware, ...)

maxpaj
  • 6,029
  • 5
  • 35
  • 56
0

There is no need to load compression again.

From compression npm examples

express/connect

When using this module with express or connect, simply app.use the module as high as you like. Requests that pass through the middleware will be compressed.

var compression = require('compression')
var express = require('express')

var app = express()

// compress all responses
app.use(compression())

// add all routes
Stamos
  • 3,938
  • 1
  • 22
  • 48