Javascript 自动将控制器添加到路由器(不需要路由)是安全问题还是性能问题?

Javascript 自动将控制器添加到路由器(不需要路由)是安全问题还是性能问题?,javascript,typescript,performance,rest,express,Javascript,Typescript,Performance,Rest,Express,因此,我编写了处理此问题的代码,基本上它会在我的项目中查找任何placeholder.controller.ts文件,并使用导出的控制器数组添加路由。控制器必须默认导出为具有特定格式的数组 格式如下所示: const controller1={ 端点:“/hello/world”, 方法:“get”, 控制器:()=>console.log('hello world!'), } 导出默认值[ 控制器1 ]; 处理所有这些问题的路由代码存在于routes.ts文件中,如下所示: 从“glob”导

因此,我编写了处理此问题的代码,基本上它会在我的项目中查找任何placeholder.controller.ts文件,并使用导出的控制器数组添加路由。控制器必须默认导出为具有特定格式的数组

格式如下所示:

const controller1={
端点:“/hello/world”,
方法:“get”,
控制器:()=>console.log('hello world!'),
}
导出默认值[
控制器1
];
处理所有这些问题的路由代码存在于routes.ts文件中,如下所示:

从“glob”导入glob;
从“路径”导入路径;
从“express”导入{Router};
从“../lib/utilities/generic utilities”导入{toArray};
从“../lib/utilities/type checking”导入{isRouteType,isArrayWithContent};
从“../lib/middleware/generic middleware”导入{skip};
从“../meta/@types/common-types”导入{Route};
从“./settings”导入{SecureRouteConstant,扩展名};
从“../lib/middleware/secure route”导入secureRoute;
const router:any=路由器({mergeParams:true});
//从路由文件到控制器文件夹的相对路径。
const controllersPath='../http/controllers/';
const addRouteToRouter=(路由:路由,文件名:字符串)=>{
常量可接受路由:对象|布尔=isRouteType(路由);
const message:string=`导出文件${filename}中的控制器时出现路由问题\n提供的路由为:`;
if(!acceptableRoute)console.log(消息、路由);
如果(!可接受路线)返回;
const{endpoint,controller,method,isSecure=secureRoutesConstant}=route;
const{middlewarebeefore=[],middlewareAfter=[]}=路由;
const makeRouteSecure:Function=isSecure?secureRoute:skip;
const middlewarebeeforearr:Function[]=toArray(middlewarebeefore);
const middlewareAfterArr:Function[]=toArray(middlewareAfter);
常量routeArguments:函数[]=[
…米德尔瓦雷前夜,
使路线安全,
控制器,
…米德尔瓦里之后,
];
router.route(endpoint)[方法](…routeArguments);
};
const addToRouterForEach=(所有路由:路由[],文件名:字符串)=>
forEach((route:route)=>addRouteToRouter(route,filename));
地球仪
.sync('**.ts',{cwd:path.join(`${uuu dirname}/`,controllersPath)})
.filter((文件名:字符串)=>filename.split('.')。包括('controller'))
.map((文件名:字符串)=>({defaultsObj:require(`${controllersPath}${filename}`),filename}))
.filter(({defaultsObj})=>isArrayWithContent(defaultsObj.default))
.forEach(({defaultsObj,filename})=>addToRouterForEach(defaultsObj.default,filename));
导出默认路由器;
并简单地导入app.ts,如下所示:

app.use('/api',路由器)
本质上,这意味着我没有路由代码,因为它都是为我处理的,我只需要编写我的服务、控制器和模型

这样做或代码本身是否存在性能或安全问题

这样做或代码本身是否存在性能或安全问题

演出 不会。自动代码只会在引导时运行,即使需要一秒钟,也不是您在处理单个客户端请求路由时要支付的成本

安全 代码体系结构本身是安全的,不会增加易受攻击的风险