nodejs express 路由

来源:互联网 发布:ubuntu 查看jdk版本 编辑:程序博客网 时间:2024/06/05 09:31

express基本路由

const express = require('express')const app = express()app.get('/', function (req, res) {  res.send('hello, express')})app.get('/users/:name', function (req, res) {  res.send('hello, ' + req.params.name)})app.listen(3000)

req.query: 解析后的 url 中的querystring,如?name=haha,req.query 的值为{name: 'haha'}
req.params: 解析 url 中的占位符,如/:name,访问/haha,req.params 的值为{name: 'haha'}
req.body: 解析后请求体,需使用相关的模块,如 body-parser,请求体为{"name": "haha"},则 req.body 为 {name: 'haha'}

app.post('/',function(req,res))获得post请求
app.all('/',function(req,res))获得所有(包括get和post)请求

路径使用正则表达式

// 匹配任何路径中含有 a 的路径:app.get(/a/, function(req, res) {  res.send('/a/');});// 匹配 butterfly、dragonfly,不匹配 butterflyman、dragonfly man等app.get(/.*fly$/, function(req, res) {  res.send('/.*fly$/');});

路由句柄

app.get('/example/b', function (req, res, next) {  console.log('response will be sent by the next function ...');  next();}, function (req, res) {  res.send('Hello from B!');});

或在express.Router中使用路由句柄
routes/index.js

ar express=require('express')var router=express.Router()router.get('/',function(req,res,next){    //res.send('hello express')    console.log('next1')    next()},function(req,res){    console.log('next2')    res.send('try again')})module.exports=router

index.js

var express=require('express')var app=express()var indexRouter=require('./routes/index')var port=8000//app.use('/',indexRouter)////app.use('/users',usersRouter)app.use('/',indexRouter)app.listen(port)console.log('listen at '+port)

使用回调函数数组处理路由:

var cb0 = function (req, res, next) {  console.log('CB0');  next();}var cb1 = function (req, res, next) {  console.log('CB1');  next();}var cb2 = function (req, res) {  res.send('Hello from C!');}app.get('/example/c', [cb0, cb1, cb2]);

express.Router

routes/index.js:

var express=require('express')var router=express.Router()router.get('/',function(req,res){    res.send('hello express')})module.exports=router

routes/users.js:

var express=require('express')var router=express.Router()router.get('/:name',function(req,res){    res.send('name:'+req.params.name)})module.exports=router

index.js:

var express=require('express')var app=express()var indexRouter=require('./routes/index')var usersRouter=require('./routes/users')var port=8000app.use('/',indexRouter)app.use('/users',usersRouter)app.listen(port)console.log('listen at '+port)

程序作用同第一种一样

routes(app)

更深一步的封装:
routes/users.js:

const express=require('express')const router=express.Router()router.get('/:name',function(req,res){    res.send(req.params.name)})

routes/index.js:

module.exports=function(app){    app.use('/',require(./users))}