express
基本使用:
const express = require('express');
const app = new express();
app.listen('4000', () => {
console.log('服务器启动');
});
const middlerwares = [
(req, res, next) => {
console.log('1');
next();
},
(req, res, next) => {
console.log('2');
next();
},
(req, res, next) => {
console.log('3');
next();
},
];
app.use('/', middlerwares);
app.use('/api', (req, res, next) => {
res.send('api');
});
listen监听端口号,use用于定义路由,它的第二个参数是中间件,middlerwares定义了一个中间件数组,当对应的路由匹配的时候,路由指定的中间件会按照定义的顺序执行,想要执行下一个中间件,必须使用next()来才可进入下一个可执行的中间件。
express路由:
//1
app.use('/test1', function (req, res, next) {
res.send('hello test1');
});
//2
app.get('/test2', function (req, res, next) {
res.send('hello test2');
});
//2
app.use('/test3', router);
use和get方式都能够定义路由路径,区别是use的参数可以是callback或者router对象,但是get定义的路由只能是callback.
请求方式
1. get 获取信息请求
2. post 添加数据请求
3. delete 删除信息请求
4. patch 修改信息请求(补丁)
3. put 修改信息请求(覆盖)
这几个的不同之处主要还是会使代码功能更语义化,当请求路由为同一值时,我们也可以通过不同的请求方式定义多个路由匹配。
获取路由参数
get请求参数
//请求:http://localhost:4000/test?id=4
app.use('/test', function (req, res, next) {
res.send(req.query);
});
//返回:{"id":"4"}
//请求http://localhost:4000/test/5
app.use('/test/:id', function (req, res, next) {
res.send(req.params);
});
//返回:{"id":"5"}
post请求获取参数:需要安装body-parser中间件
const bodyParser = require('body-parser');
//解析post表单数据
app.use(bodyParser.urlencoded({ extended: true }))
//解析post方式传入的json数据
app.use(bodyParser.json())
//路由参数解析
app.post('/index',(req,res)=>{
console.log(req.body);
})
当一个路径有多个匹配规则时,使用app.use,否则使用相应的app.method(get、post)
res参数
//用于向浏览器客户端响应数据 会自带合适的响应头
res.send()
// 发送文件给浏览器,并根据文件后缀名自动设置Content-Type
res.sendFile(path.join(__dirname, 'index.html'))
// 设置响应头
res.set('Content-Type', 'text/plain')
res.set({
'Content-Type': 'text/plain',
'cute': 'fangfang'
})
// 重定向
res.redirect('/index')
静态资源配置
京台资源服务中间件(内置中间件)
app.use(express.static('./public'));