当前位置: 首页 > 后端技术 > Node.js

使用节点框架express(4.15.5)中的内置路由器

时间:2023-04-03 14:52:56 Node.js

描述了使用express.Router类创建可安装的模块化路由处理程序。一个Router实例是一个完整的中间件和路由系统;因此,它通常被称为“微型应用程序”。下面的示例将路由器创建为一个模块,在其中加载中间件,定义一些路由,并将其安装在主应用程序的路径中。在应用程序目录中创建一个名为user.js的路由文件,内容如下:在项目目录中使用app.jsprojectconstexpress=require('express');constpath=require('路径');constlogger=require('摩根');constcookieParser=require('cookie-parser');constbodyParser=require('body-parser');constcookieSession=require('cookie-session');constapiRoutes=require('./routes/api');constcors=require('cors');constapp=express();//视图引擎setupapp.set('views',path.join(__dirname,'视图'));应用程序。set('viewengine','ejs');//将你的网站图标放在/publicapp.use(logger('dev'));app.use(bodyParser.json());app.use(bodyParser.urlencoded({extended:false}));app.use(cookieParser());app.use(cookieSession({name:'session',secret:'sdfasd@d34sdf@',maxAge:24*60*60*1000*7,}));app.use(cors());app.use(express.static(path.join(__dirname,'public')));//相当于拼接路径app.use('/api',apiRoutes);//捕获404并转发到错误handlerapp.use(function(req,res,next){consterr=newError('未找到');错误状态=404;next(err);});app.all('*',function(req,res,next){//相当于域名白名单,不能写*,因为*是通配符,所有网站都可以自己访问,你可以拿来玩玩。//你也可以访问不是我们公司的网站,开个玩笑。//res.setHeader('Access-Control-Allow-Origin','*');//所以可以单独配置白名单,即可以跨域访问的URLres.setHeader('Access-Control-Allow-Origin',['http://127.0.0.1:8000']);//...Headers必须有固定值,"content-type"res.setHeader('Access-Control-Allow-Headers','X-request-With,content-type');//res.setHeader("Access-Control-Allow-Headers","X-request-With");res.setHeader('Access-Control-Allow-Methods','GET,POST,DELETE,PUT,OPTIONS');//发布/下一步stepcannotsavenext();});//errorhandlerapp.use(function(err,req,res,next){//设置locals,开发时只提供errorres.locals.message=err.message;res.locals.error=req.app.get('env')==='开发'?呃:{};//渲染错误页面res.status(err.status||500);res.render('error');});module.exports=app;routes/api.jsconstexpress=require('express');constrouter=express.Router();constuserController=require('../controllers/user.js');consttestController=require('../controllers/test.js');/*添加用户列表*/router.post('/user',userController.add);router.post('/test',testController.add);module.exports=router;controllers/user.jsconstexpress=require('express');constrouter=express.Router();//特定于此路由器的中间件router.use(functiontimeLog(req,res,next){console.log('Time:',Date.now());next();});//定义关于routerouter.post('/user',function(req,res){res.send('用户列表api');});//定义首页routerouter.post('/test',function(req,res){res.send('测试api');});module.exports=router;models/user.jsconstmongoose=require('../utils/database.js');constUser=mongoose.model('user',{age:Number,email:String,});module.exports={add(age,email,cb){常量用户=新用户({年龄:年龄,电子邮件:电子邮件,});user.save((err)=>cb(err));},};utils/database.jsconstmongoose=require('mongoose');//mongoose.connect('mongodb://数据库路径(包括端口)/数据库名称');mongoose.connect('mongodb://127.0.0.1:27017/xveZh??i');mongoose.Promise=global.Promise;module.exports=mongoose;