安装
npm init
npm i express --save
请求参数
- method: 请求方法
- url: 请求地址
- data: 请求参数
get请求参数:
- query: url? + query参数 —> 键值对的形式,多个键值对使用&拼接
- params:
- 注册路由需要声明占位符
- 请求的时候需要填写实例的参数数据
post请求参数:
- query
- params
- 请求体参数:
- 参数在请求体中
- 获取: req.body
- 请求体参数携带的数据量更大相比get方法的query方式
- 数据放在请求体中不是以明文的方式在url中体现,比get请求更加安全
响应方式
返回的方式: res.< method>
- res.end() 直接返回,
- res.send() 根据返回的数据自动作出判断处理,再返回, 如: 如果返回的数据中是中文的内容,send会设置content-type:text/html;charset=utf-8
- res.json() 直接返回, json数据
- res.set() 设置响应头
- res.cookie() 设置cookie
- res.status() 设置响应状态码
中间键
- 本质:函数
- 作用:
- 添加一些扩展功能
- 处理请求头,响应数据,针对请求做一些预处理的工作
- 调用下一个中间键
使用中间键
app.use(中间键函数);
app.use()直接使用中间键函数,可以接收到任何方法,任何路径的请求
注意点:
1、如果有连续的多个中间键函数被使用,不要在靠前的中间键函数中返回数据,容易导致后续中间键中(后续中间键中也返回数据)报错
2、如果中间键和请求的方法共存的情况下,先匹配谁,就执行谁
3、 get, post请求的回调也是中间键函数
基本案例
const express = require('express');
const app = express();
// express.static() 向外暴露静态资源
// express.json() 处理post请求参数 application/json
// express.urlencoded() 处理post请求参数 application/x-www-form-urlencoded
// 思考: 使用的express.json()返回值,返回值是一个函数,而且函数工作完自动调用了next方法
app.use(express.urlencoded({extended: true}));
app.use(express.json());
// __dirname 绝对根路径
app.use(express.static(path.resolve(__dirname, 'public')))
// 第三方中间键 全局使用
// app.use(multipartMiddleware)
// 局部使用中间键: multipartMiddleware 必须放置在请求回调的前边
app.post('/login', multipartMiddleware, (request, response) => {
console.log('body请求体参数; ', request.body);
response.send('服务器返回的数据')
});
// 注册路由
// requ est(请求信息对象 - req), response(响应信息对象 - res)
app.get('/login/:index', (req, res) => {
console.log('1111');
console.log('query参数: ', req.query);
console.log('params参数: ',req.params);
// 设置响应头字段
res.set({
'content-type': 'text/html;charset=utf-8'
})
// 服务器返回数据的时候默认的编码格式是utf-8
res.status(200).end('服务器返回的数据');
});
app.post('/register/:id', (req, res) => {
console.log('2222');
console.log('post query参数: ', req.query);
console.log('post params参数: ', req.params);
console.log('post 请求体参数: ', req.body);
res.end('register success data');
});
app.listen('3001', (err) => {
if(err){
console.log('服务器启动失败');
console.log(err);
}else {
console.log('服务器启动成功');
console.log('服务器地址:http://localhost:3001');
}
})