nodejs之express框架,路由与中间件

一、express框架

express 基于 Node.js 平台,快速、开放、极简的 Web 开发框架
koa 基于 Node.js 平台的下一代 web 开发框架(Express的原班人马打造)

1. express基本使用

  • 安装:npm install express --save
  • 使用
const express = require('express')
const app = express()
app.get(url, (res, res) => {
	console.log('有请求进来了')
	res.send({err: 0, msg: 'hello'})
})
app.listen(3000, localhost, ()=>{
	console.log('========app server start=========')
})

2. api接口

  • url = host + port + pathname
  • 请求方式 get / post
  • 参数
  • 返回值

3. get接口

  • req.query 接收get请求的参数

4. post接口

  • req.body 接收post请求的参数
  • console.log(req.body) // undefined
  • express不能直接解析消息体
  • 使用第三方插件body-parser解析消息体
  • 安装:npm install body-parser
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
// 使用中间件 app.use('path', 回调函数) 
app.use('/', bodyParser.urlencoded({extended: false}))

app.post(url , (req, res) => {
	console.log(req.body)
	res.send({err: 0, msg: 'hello'})
})

app.listen(3000, localhost, () =>{
	console.log('==== app server start =====')
})

二. router路由

便于后期项目维护,文件夹目录结构分类管理
routerTest
– router >>userRouter.js
– server.js

// server.js
const express = require('express')
const app = express()
const useRouter = require('./useRouter.js')
// 匹配路径'/user'时使用路由
app.use('/user',useRouter)
app.listen('3000',()=>{
  console.log('----------server start----------')
})

// userRouter.js
const express = require('express')
const router = express.Router() // 获得路由实例
// 接口'/user/login'
router.get('/login',(req,res)=>{
  res.send('user login ok')
})
module.exports = router // 导出路由对象

三. middleware中间件

内置中间件 (static)
自定义中间件 (全局和局部)
第三方中间件 (body-parser)

  • app.use(‘path路径’,回调函数) 使用中间件(插件)
  • 第一个参数默认为’/’,默认可以不写
  • 第二个参数是函数,(req,res,next)=>{}

1. 内置中间件 (static)

静态资源目录 static
指定一个目录,作为静态资源的默认目录

const express = require('express')
const path = require('path')
const app = express()
// 推荐指定一个静态资源路径 public
app.use('/public',express.static(path.join(__dirname,'./public')))
// 第一个public参数理解为地址栏访问要加上的 /public
// 第二个public参数用于拼接文件夹的绝对路径

app.listen(3000,()=>{
  console.log('-----------app server start------------');
})

2. 自定义中间件 (全局和局部)

  • 全局中间件
const express = require('express')
const app = express()
app.use('/', (req, res, next) =>{
	console.log('拦截所有请求。。。')
	if (token) {
    	console.log('有token值');
    	next() // 之后后面的程序
  	} else {
	    return res.send({err:-1,msg:'参数缺失'})
  	}
})

app.get( ... )
...

app.listen(3000,()=>{
  console.log('-----------server start------------')
})
  • 局部中间件

app.get(’/test’, fn1, fn2, fn3, fn4…)

app.get('/user/login',(req,res,next)=>{
  console.log('拦截login请求。。。');
  let {token} = req.query
  if (token) {
    console.log('有token值');
    next() // 之后后面的程序
  } else {
    return res.send({err:-1,msg:'参数缺失'})
  }
},(req,res)=>{
  ...
}

3. 第三方中间件 (body-parser)

  • 安装:npm install body-parser
  • 用于解析post请求消息体
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
app.use(bodyParser.json()) //解析json数据
app.use(bodyParser.urlencoded({extened: false})) // 解析表单数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值