• node.js 二


    一、node创建web服务器

      1、引入系统模块,用于创建网络服务器的模块

      const http = require(' http ');

      2、创建网络服务器对象

      const app = http.createServer();

      3、当客户端有请求来的时候

      app.on(' request ', (req, res) =>{

        //响应

        res.end(' <h1>hellow</h1> ');

      })

      4、监听端口,习惯性监听3000端口,别的端口也行

      app.listen(3000);

      console.log('服务器已启动,监听3000端口,请访问localhost:3000 ');

    二、req 和 res 的一些方法和属性

      1、req.url  :  获取请求地址

      

         默认是 ' / ' 

      2、req.headers :  获取请求报文的信息

       3、req.method :  获取请求的方法

      4、设置http状态码

        

         res.writeHead() ——> 默认不写是200,

        res.writeHead( 400 ) ——> 设置状态码为400

      5、writeHead()方法有两个参数,参数一是设置响应状态码,参数二是一个对象,用来设置响应头数据

        如:res.writeHead(200, {

            'Content-Type' : ' text/plain ' 

          })

        //  content-type是响应类型,text / plain 表示为纯文本,默认值

      文本的类型有:

        

       6、设置字符集编码,默认中文在浏览器会显示乱码

        res.writeHead(200, {

          'Content-Type' : ' text/html;charset=utf8 '

        })

        // 设置了响应类型为html类型,字符集编码为utf-8

     三、http请求与响应处理

      客户端向服务端发送请求时,有时候需要带一些参数,那node如何获取这些参数呢?

      1、GET请求

      请求参数被放置在浏览器的地址栏中,例如:http://localhost:3000/?name=zhangsan&age=30

      获取get发送的参数需要借助系统模块url,url模块可以用来处理url地址

      (1)//导入url系统模块用于处理url地址

          const url = require(' url ');

         //url有个parse方法可以解析url地址, 先在node里面打印出看看

         app.on(' request ', (req, res)=>{

            console.log( url.parse( req.url ) );

          })

       输入的地址 : 

        

       node里的打印结果

        

       可以看到返回的是一个对象,属性query里面是 ? 后面的参数,也就是get传进去的参数,

      pathname是访问的地址

     (2)、但是获得的参数是字符串形式,想要得到对象形式的参数又该怎么办呢??

       其实url.parse() 还有第二个参数,设置为true, query里面的值会转换成对象形式显示

        url.parse( req.url, true );

        

       此时我们就可以获取到传入的参数了

      let { name, age } = url.parse( req.url, true ).query;

      2、POST请求

      请求参数被放置在请求体中进行传输

      获取POST请求需要用到data事件和end事件

      (1)建立一个html文件,在里面写个form表单来发送post请求

        <form action="http://localhost:3000" method="post">
            <input type="text" name="username">
            <input type="text" name="password">
            <input type="submit" value="请求">
        </form>
    

      

        const http = require('http');
        // const querystring = require('querystring');
        const app = http.createServer();
    
        app.on('request', (req, res)=>{
            // 创建一个用来存放post参数的变量,因为Post参数是一点一点传的,不是一下子全部传进去
            let postparams = '';
            // 监听参数传输事件, 第二个参数是回调函数, 参数为post传入的参数
            req.on('data', params =>  postparams += params);
            // 监听参数传输完毕事件
            req.on('end', ()=> {
                //console.log(querystring.parse(postparams));
    // 参数传入结束后,打印传入的post参数 console.log(postparams); })
         // 必须返回一个响应结果,不然会页面会一直在处理中的状态 res.end('ok'); }) app.listen(3000);

      在node中打印出传入的post参数

      

      (2)、打印出来又是一个字符串,那怎么才能把它转为对象格式呢 ???

        node提供了一个内置系统模块querystring,专门用于将http参数转为对象格式

        const querystring = require(' querystring ');

        querystring.parse(' http的参数 ')

        在参数传输完毕后,console.log( querystring.parse( postparams ) );

      

      

      

  • 相关阅读:
    多IDC数据分布--MySQL多机房部署
    Mongodb~连接串的整理
    Jenkins~配合Docker及dotnetCore进行生产和测试环境的灵活部署
    jenkins~集群分发功能的具体实现
    DotNetCore跨平台~linux上还原自主nuget包需要注意的问题
    jenkins~集群分发功能和职责处理
    HDU 2074 叠筐
    破解Veeam过程
    hdu1015(Safecracker )
    Oracle—RMAN备份(一)
  • 原文地址:https://www.cnblogs.com/hxblogs/p/13362076.html
Copyright © 2020-2023  润新知