Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExpressJS中相同路由函数的多条路径_Javascript_Node.js_Express_Router - Fatal编程技术网

Javascript ExpressJS中相同路由函数的多条路径

Javascript ExpressJS中相同路由函数的多条路径,javascript,node.js,express,router,Javascript,Node.js,Express,Router,我使用Node、Express和Mongoose构建了一个服务。目前,它将模板呈现到前端,但我想将功能扩展到完整的API 我希望为每种类型的资源使用一个单独的路由,并返回一个标志,告诉服务器返回API内容,或者呈现视图并用HTML响应 这方面的例子如下: /users/:userId /api/users/:userId 两者都将使用相同的函数(即users.getOne),然后检查路径api是否存在,并相应地发送正确的响应 显然,我可以做以下几点: app.get( '/users/:us

我使用Node、Express和Mongoose构建了一个服务。目前,它将模板呈现到前端,但我想将功能扩展到完整的API

我希望为每种类型的资源使用一个单独的路由,并返回一个标志,告诉服务器返回API内容,或者呈现视图并用HTML响应

这方面的例子如下:

  • /users/:userId
  • /api/users/:userId
两者都将使用相同的函数(即
users.getOne
),然后检查路径
api
是否存在,并相应地发送正确的响应

显然,我可以做以下几点:

app.get( '/users/:userId', users.getOne );
app.get( '/api/users/:userId', users.getOne );

并检入响应处理程序,尽管我不希望为每个资源定义两个路由。

您可以在路由路径中使用路径模式或正则表达式

使用路径模式,您的路线将如下所示:

app.get( '(/api)?/users/:userId', users.getOne );

您可以制作一个简单的分派函数,将两者都添加进去;一个在路由前面加“/api”,然后像addGet一样调用它(“/users/:userId”,users.getOne);它可以做其他有趣的事情,或者接受一个标志来禁用一条或另一条路径;它可以帮助你的整个计划的清洁,而不是从它减损。。。