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:挂载的路由器

 

posted on   F_Hark  阅读(238)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示