文章目录
一、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})) // 解析表单数据