如何在Expressjs中命名路由

问题描述 投票:0回答:3

在 Express.js 中,如何设置路由名称,以便以后只需调用该路由名称即可检索相应的 URL?

File app.ts:
app.use('/api', apiRouter);

File api.ts:
router.use('/auth', authRouter);

File auth.ts:
router.get('/login', AuthController.login).as('my route name');
or
app.get('/login', AuthController.login, name='my route name'); 
...

output:
res.send(anyFunction('my route name')) // => /api/auth/login | https://example.com/api/auth/login

任何示例或文档。谢谢

node.js typescript express routes router
3个回答
0
投票

您可以添加一个 中间件,在 res

locals
属性上添加路由名称。像这样的东西-

const middleware = async (req, res, next) => {
      switch(req.path){
        case "/api/auth/login":
          res.locals["route-name"] = "My Route Name";
          break;
        // Other case statements
      }
next();
}

然后在你的控制器中,你可以这样做 -

res.send(myFunction(res.locals["route-name"]));

0
投票

首先,您必须创建单独的路由文件,在其中导入所有控制器。

在您的

app.ts
中添加代码(我假设这是您的主文件)

import routes from './routes/routes';

// Register routes
app.use('/', routes);

并添加您的路由器代码,如下所示:

routes.ts

import { Router } from "express";
let controller = require("../controller/yourController");
let router = Router();
let apiRouter = Router();


apiRouter.get('/download-errorlog', controller.getErrorLogFile);

apiRouter.post('/get-data', controller.getData);

// Define the API endpoint
router.use('/api/v1', apiRouter);
export default routes;

0
投票

您应该添加一个新功能。此函数返回您想要的路线的原始 url。

export default (name) => {
  const mainUrl = "https://example.com"
  switch (name) {
    case "my route name":
      return `${mainUrl}/api/auth/login`;
    .
    .
    .
    default:
      return null;
  }
};

然后,将函数导入到

auth.controller.ts

// auth.controller.ts

res.send(getUrl("my route name")); // => https://example.com/api/auth/login
© www.soinside.com 2019 - 2024. All rights reserved.