node-http

作者: 成熟稳重的李先生 | 来源:发表于2019-10-09 23:52 被阅读0次
    // 客户端 浏览器
    // 服务端 监听请求  监听特定的ip和端口号
    
    let http = require("http");
    let qs = require("querystring");
    
    // 创建服务端 需要提供一个监听函数,这个函数只有当请求到来时触发
    // 端口号一般不要使用3000以下的
    // 请求分为三部分 1) 请求行  方法 路径 协议
    //               2) 请求头 浏览器信息 + 自定义
    //               3) 请求体
    // request 是可读流  response是可写流
    // 请求体需要on("data")来接收数据
    
    // 响应也分为三部分 1) 响应行 常见状态码 200 404 403 500   206 部分请求,在请求头中指定字段 "Range:bytes=0-3"
    //                2) 响应头 --headers
    //                3) 响应体
    
    // createClient  爬虫
    
    http
      .createServer((req, res) => {
        // request中存放的内容
        console.log(req.url); //  默认 /, 端口号后边的部分,但是没有hash
        console.log(req.method); // 方法名GET/POST... 都是大写
        console.log(req.httpVersion); // http版本号
        console.log(req.headers); // {} 所有的属性名  都是小写
    
        // 请求的post方法
        let arr = [];
        req.on("data", function(data) {
          console.log(data);
          arr.push(data);
        });
        req.on("end", () => {
          // 不管有没有请求体 都会触发end事件
          let str = Buffer.concat(arr).toString();
          // let obj = {};
          // str.replace(/([^=&]*)=([^=&]*)/g, function() {
          //   obj[arguments[1]] = arguments[2];
          // });
          // querystring的用法和json.parse JSON.stringify 的用法差不多
          let obj = qs.parse(str, "&", "=");
          res.statusCode = 200; // 必须是有意义的状态码
          res.setHeader("a", "1"); //设置响应头,设置给客户端的
          res.end(JSON.stringify(obj));
        });
        // response响应的内容
        // res.end("hello"); // 立刻把结果响应回去
      })
      .listen(3000, "localhost", () => {
        console.log("3000 starts");
      });
    
    //  nodemon 只要文件发生变化,就会重新启动服务
    

    相关文章

      网友评论

          本文标题:node-http

          本文链接:https://www.haomeiwen.com/subject/eqwnpctx.html