NodeJS Express-路由

时间:2018-12-06 13:33:20

标签: node.js express

我已经用'expressjs'设置了一个NodeJS API。在我的代码中,我有一些类似的代码块,如下所示:

app.get('/api/my/path', (req, res) => {
  doSomethingUseful();
});

所有这些请求都做不同的事情,因此被调用的函数也总是不同的。

我在问自己,这是否是在NodeJS中编写代码的好习惯。 如果有更好/更干净的方式编写所有这些路径,请告诉我如何或至少给我一个寻找它的地方,我将不胜感激。

编辑1:要明确:我问将很多'app.get(...)'写到一个源代码文件中是个好主意,还是有更好的方法?

2 个答案:

答案 0 :(得分:3)

是的,比将所有路由写入一个文件有更好的方法。例如,假设您有用户路线和问题。 对于用户,您需要获取/设置/放入/删除个人资料,以及类似的问题。因此,您将创建以下文件夹结构:/api/users/api/questions/api/users中,

const express=require('express')
 const router=express.Router()

 //this handles route: /users
 router.get('/',(req,res)=>{})

 //this handles route: /users/profile
 router.get('/profile',(req,res){})

 //this is to retrieve profile of specific user by user id :/users/profile/:userID
 router.get('/profile/:userId',(req,res))


 router.post('/profile',(req,res))
 .
 .

然后,在您的index.js或项目的入口点中,

const users=require('./api/users')
const questions=require('./api/questions')
app=require('express')

app.use('/users',users)
app.use('/questions',questions)

实际上,您说的是任何/users路由,请参考users.js文件,如果是任何/questions路由,请参考questions.js文件,依此类推

答案 1 :(得分:1)

使用一个简单的模块,在形成堆之前不要调用路由。

尝试Route Magic

您只需要执行两行代码,并让模块读取您的目录和文件结构即可处理所有app.use路由调用,如下所示:

const magic = require('express-routemagic')
magic.use(app, __dirname, '[your route directory]')

对于那些想要手动处理的用户,只是不要使用将目录传递给Magic。