Node.js 节点REST API:需要在一个对象中组合多个路由
我正在用TypeScript和NodeJS构建一个应用程序后端 我将多个路由逻辑保存在单独的文件中(每个服务的单个文件夹中),如下所示: 我需要在将来的所有服务中这样做 我需要组合这些路由,以便在index.ts文件中将它们指定为单个实体 比如:Node.js 节点REST API:需要在一个对象中组合多个路由,node.js,typescript,express,Node.js,Typescript,Express,我正在用TypeScript和NodeJS构建一个应用程序后端 我将多个路由逻辑保存在单独的文件中(每个服务的单个文件夹中),如下所示: 我需要在将来的所有服务中这样做 我需要组合这些路由,以便在index.ts文件中将它们指定为单个实体 比如: 从“/routes/”导入; app.use('/api/users',require('./routes/users/); . . 等等 因此,我不必在index.ts文件中明确地提到每个路由。要做到这一点,您需要动态地发现文件名(readdir或
从“/routes/”导入;
app.use('/api/users',require('./routes/users/);
.
.
等等
因此,我不必在index.ts文件中明确地提到每个路由。要做到这一点,您需要动态地发现文件名(
readdir
或类似文件),并使用来导入它们。动态导入(import()
)返回模块名称空间对象的承诺
例如,使用以下内容(即兴,可能需要一些调整):
请注意,这假设您有一个TypeScript加载程序设置(例如,与
ts节点
一样)。如果没有,则需要在运行之前将这些TypeScript文件编译为JavaScript,然后在rexIsRouterFile
中将.ts
更改为.js
要执行此操作,需要动态发现文件名(readdir
或类似文件),并使用来导入它们。动态导入(import()
)返回模块名称空间对象的承诺
例如,使用以下内容(即兴,可能需要一些调整):
请注意,这假设您有一个TypeScript加载程序设置(例如,与
ts节点
一样)。如果不这样做,则需要在运行之前将这些TypeScript文件编译为JavaScript,然后在rexIsRouterFile
中将.ts
更改为.js
,有一种更简单的方法使用路由器。使用()
方法可以组合各个端点
// /routes/users/index.ts
import * as express from 'express';
import { signupRouter } from './signupRouter';
import { signinRouter } from './signinRouter';
import { signoutRouter } from './signoutRouter';
const router = express.Router();
router.use(signupRouter);
router.use(signinRouter);
router.use(signoutRouter);
export {router as usersRouter};
假设您的文件结构如下所示-
/src
/routes
/users
- signup.ts
- signin.ts
- signout.ts
index.ts (your main app entry point)
您可以使用express.router()
提供的router.use()
方法
首先,将一个新的index.ts
文件添加到/routes/users
文件夹中,以合并多个端点
// /routes/users/index.ts
import * as express from 'express';
import { signupRouter } from './signupRouter';
import { signinRouter } from './signinRouter';
import { signoutRouter } from './signoutRouter';
const router = express.Router();
router.use(signupRouter);
router.use(signinRouter);
router.use(signoutRouter);
export {router as usersRouter};
然后在主应用程序入口点index.ts
,执行以下操作-
// /src/index.ts
import * as express from 'express';
import { usersRouter } from './routes/users/index.ts';
const PORT = process.env.PORT || 4000;
const app = express();
...
// Add your single entity entry point like this
app.use('/api/user', usersRouter);
...
app.listen(PORT, () => console.log(`Listening on port ${PORT}`)
使用
路由器有一种更简单的方法。使用()
方法可以组合各个端点
// /routes/users/index.ts
import * as express from 'express';
import { signupRouter } from './signupRouter';
import { signinRouter } from './signinRouter';
import { signoutRouter } from './signoutRouter';
const router = express.Router();
router.use(signupRouter);
router.use(signinRouter);
router.use(signoutRouter);
export {router as usersRouter};
假设您的文件结构如下所示-
/src
/routes
/users
- signup.ts
- signin.ts
- signout.ts
index.ts (your main app entry point)
您可以使用express.router()
提供的router.use()
方法
首先,将一个新的index.ts
文件添加到/routes/users
文件夹中,以合并多个端点
// /routes/users/index.ts
import * as express from 'express';
import { signupRouter } from './signupRouter';
import { signinRouter } from './signinRouter';
import { signoutRouter } from './signoutRouter';
const router = express.Router();
router.use(signupRouter);
router.use(signinRouter);
router.use(signoutRouter);
export {router as usersRouter};
然后在主应用程序入口点index.ts
,执行以下操作-
// /src/index.ts
import * as express from 'express';
import { usersRouter } from './routes/users/index.ts';
const PORT = process.env.PORT || 4000;
const app = express();
...
// Add your single entity entry point like this
app.use('/api/user', usersRouter);
...
app.listen(PORT, () => console.log(`Listening on port ${PORT}`)
你可以试试这个文档嗨,湿婆,我知道这一点。这不是我想要的,因为我为每个端点保存了不同的文件。您可以尝试使用此文档Hi Siva,我知道这一点。这不是我想要的,因为我为每个端点保存了不同的文件。