zoukankan      html  css  js  c++  java
  • node js express框架

    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:挂载的路由器
  • 相关阅读:
    Java测试开发--Set、Map、List三种集合(四)
    Java测试开发--Maven用法(三)
    Java测试开发--Java基础知识(二)
    干净的卸载数据库
    腾讯云服务器部署springboot项目
    MultipartFile 实现图片上传
    URI和URL
    Redis debug模式报org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with...错误
    空指针异常
    Java 程序中怎么保证多线程的运行安全?
  • 原文地址:https://www.cnblogs.com/klwblogs/p/13173885.html
Copyright © 2011-2022 走看看