能方便快速的创建Web网站的服务器或API接口的服务器
// 1、导入express
const express = require('express')
// 2、创建web服务器
const app = express()
// 4、监听客户端的get和post请求,并向客户端响应具体的内容
app.get('/user', (req, res) => {
res.send({ name:'qq',age: 18 })
})
app.post('/user', (req, res) => {
res.send('请求成功')
})
// 获取客户端发送过来的查询参数,req.query,默认是一个空对象
// http://127.0.0.1/?name=zs&age=20
app.get('/', (req, res) => {
console.log(req.params)
res.send(req.params)
})
// 获取url中的动态参数,req.params,默认是一个空对象
app.get('/user/:id/:name', (req, res) => {
console.log(req.params)
res.send(req.params)
})
// 3、调用app.listen(端口号,启动成功后得回调函数),启动服务器
app.listen(80, () => {
console.log('服务器运行~')
})
// app.use() 函数的作用,就是用来注册全局中间件。我自己的理解是定义和使用分开。
app.use(express.static('./public'))
app.use(express.static('./file'))
挂载路径前缀:
app.use(‘/demo’, express.static(‘./file’))
访问路径:https:127.0.0.1/demo/file
发现代码发生变化,自动重启服务器:npm i -g nodemon
nodemon app.js
在express中,路由指的是客户端的请求与服务器处理函数之间的映射关系。
express中的路由分3部分组成,分别是请求的类型,请求的url地址、处理函数。
app.method(path, handler){
...
}
路由模块化:
var express = require('express') // 导入express
var router = express.Router() // 创建路由对象
router.get('/user', (req, res) => { // 挂载路由
res.send({ name:'qq',age: 18 })
})
router.post('/user', (req, res) => { // 挂载路由
res.send('请求成功')
})
module.exports = router // 向外导出路由对象
了解中间件分类请点击这里
业务处理过程中的中间环节,有输入和输出
next(),把流转关系交给下一个中间件或路由
// 全局生效的中间件
app.use((req, res, next) => {
const time = Data.now()
// 为req对象,挂载自定义属性,从而把时间共享给后面的所有路由
req.startTime = time
next()
})
app.get('/', (req, res) => {
res.send('page1' + req.startTime)
})
app.get('/user', (req, res) => {
res.send('page2' + req.startTime)
})
// 局部生效的中间件
const mw1 = (req, res, next) => {
const time = Data.now()
// 为req对象,挂载自定义属性,从而把时间共享给后面的所有路由
req.startTime = time
next()
}
const mw2 = (req, res, next) => {
const time = Data.now()
// 为req对象,挂载自定义属性,从而把时间共享给后面的所有路由
req.startTime = time
next()
}
app.get('/', mw1, mw2, (req, res) => {
res.send('page1' + req.startTime)
})
app.get('/', (req, res) => {
res.send('page1')
})
注意事项: