Matheus Felipe
Matheus Felipe

Reputation: 103

Generic route prefix + specific route in Node Express

I have a system where, before specifying the data you want to access, you need to provide the company you are accessing from, to check for authorization.

For example, to get products, materials and users:

GET company/123123/product

GET company/123123/material

GET company/123123/user

When creating the express routes in node JS, I'm using the prefix "company/:id" in all my routes declarations:

app.get("/company/:id/product", callbackProduct);

app.get("/company/:id/material", callbackMaterial);

app.get("/company/:id/user", callbackUser);

The question is, is there any way to generalize this 'company' part of the route, in a way that I don't need to re-write it in all routes?

For example:

app.something("/company/id:/*", genericCallback);

app.get("/product", callbackProduct);

app.get("/material", callbackMaterial);

app.get("/user", callbackUser);

Upvotes: 0

Views: 877

Answers (1)

Palladium02
Palladium02

Reputation: 1171

What you could do is to use express.Router.
In an company.routes.js you would write something like that.

const express = require("express");
const CompanyRouter = express.Router();

CompanyRouter.get("/:id/product", callbackProduct);
CompanyRouter.get("/:id/material", callbackMaterial);
CompanyRouter.get("/:id/user", callbackUser);

module.exports = CompanyRouter;

And in your server.js file you would do the following.

const express = require("express");
const CompanyRouter = require("./path/to/CompanyRouter.js")

const app = express();
app.use("/company", CompanyRouter);
app.listen(3000);

Upvotes: 1

Related Questions