1.简述express
快速,不受限制的,极简的Node Web框架。通俗来说就是node http模块的替代品:4
2.在node上创建使用express框架创建的web服务器:
const express=require(‘express‘); //引入express 模块 const app=express();// 创建web服务器 调用这个express函数 app.listen(8080); // 使用这个80接口
创建这个接口的同时 ,本地会自动打开8080这个接口,80/8080 是http协议常用端口号 https是443/tcp 443/udp
3.express下的路由
app.get(‘/index‘,(req,res)=>{
res.send(‘<h1>这是主页</h2>‘);
});
app.get(‘/redirect‘,(req,res)=>{ //重定向 302 状态码
res.redirect(‘https://www.google.com.hk/‘)
});
app.get(‘/file‘,(req,res)=>{
res.sendFile(__dirname+‘/pre.html‘);
});
//app.METHOD(path, [callback...], callback)
// app 是 express 对象的一个实例, METHOD 是一个 HTTP 请求方法, path 是服务器上的路径 (得到的url), callback 是当路由匹配时要执行的函数。
4. 请求方法 get 获取类型为查询字符串 req.query 为查询get 方法中的数据
比如在搜索页面 中搜索一个物品 这个搜索框中 请求的类型为get 怎么在服务器端怎么获取到这个数据
创建一个搜索的html文件
这个form表单提交时候 是重新发送请求给服务器 方法是 get url 是mysearch
<form method=‘get‘ action=‘/mysearch‘> <input type=‘text‘ name=‘kd‘> <!--一定要所传递的数据打上一个标签 name 只有设置了 name 属性的表单元素才能在提交表单时传递它们的值,因为服务端获取表单提交的数据是通过表单元素的 name 属性的值而得到的, 没有 name 属性就无法得到表单元素提交给服务端的值 --> <input type=‘submit‘ > </form>
在服务器中添加一个路由
app.get(‘/search‘,(req,res)=>{
console.log(req.query);
res.sendFile(__dirname+‘/sousuo.html‘); //{ kd: ‘123‘ } 会获得一个对象
});
app.get(‘/mysearch‘,(req,res)=>{
res.send(‘这是你搜索的‘+ req.query.kd)
})
这是服务器端接收到的数据
5.post 获取方法 以及 post的数据
由于post的数据是以流的方式传递 所以需要事件来查看
app.get(‘/login‘,(req,res)=>{
res.sendFile(__dirname+‘/zhuce.html‘);
});
app.post(‘/mylogin‘,(req,res)=>{
req.on(‘data‘,(chunk)=>{
//chunk 分段的数据,格式为buffer
//console.log(chunk)
// <Buffer 75 6e 61 6d 65 3d 31 32 33 26 75 70 77 64 3d 34 35 36>
//还要把chunk的数据转为字符串 字符串在转为对象
let data=querystring.parse( chunk.toString() );
console.log(data); //需要引入querystring模块
});
res.send(‘登陆成功‘);
});
buffer数据是不能被查看的 所以需要转换为字符串 然后把字符串转换为对象需要用到querystring 模块下的parse方法 转为对象供我们使用
6. 路由传参 获取 req.params
app.get(‘/package/:pname‘, (req,res)=>{
// :pname 设置形参
req.params 获取路由传参的数据,格式为对象
});
传递
http://127.0.0.1:8080/package/express
express是实参,真正传递的数据
console.log打印出来 实参
app.get(‘/user/:pname‘,(req,res)=>{ console.log(req.params); res.send(‘孔令伟‘); });
7.路由器
创建一个路由器
const express=require(‘express‘); const router=express.Router(); //express.Router 创建一个路由器 router.get(‘/list‘,(req,res)=>{ //在路由器中写入一个路由 res.send(‘小明‘); console.log(router); }); module.exports=router; //把路由器公开导出 由于本身就是为对象
把路由器引入到web服务器
const express=require(‘express‘); const rou=require(‘./luyou.js‘); //引入路由器 const app=express(); app.listen(8080); app.use(‘/product‘,rou); //参数1:添加的前缀 //参数2:挂载的路由器