美文网首页让前端飞
nodejs(1)----- 创建一个服务

nodejs(1)----- 创建一个服务

作者: Aaron_Alphabet | 来源:发表于2018-07-20 10:23 被阅读8次

    2018.7.20 写了好几遍,还是记不住,这里盲打总结一次

    1. 用到的四个模块

    const http = require('http');  // 创建 服务用
    const fs = require('fs');  //  读写文件
    const querystring = require('querystring'); // 解析post数据
    const urllib = require('url');  // 解析get数据
    

    2. 创建一个服务

    const server = http.createServer( (req, res) => {
        // req ---> request 前端发来请求的对象
        // req.url   请求的路径
        // res ----> response 后端响应的对象
        // res.write(data)  向前端相应的数据
        // res.end()  结束  
    });
    
    server.listen(8080);
    

    3. 解析GET数据 最大3kb

    const server = http.createServer( (req, res) => {
        // GET 
        let obj = urllib.parse(req.url, true); // true 可以数据解析为对象
        let url = obj.pathname; // 请求的url路径
        let GET = obj.query;  // get 数据
    
    });
    
    server.listen(8080);
    

    4. 解析POST数据 最大可达1GB

    const server = http.createServer( (req, res) => {
        // POST ---- 数据大的时候是分段传输,所以用事件监听
        let str = '';  // 用一个对象存传过来的数据
        // 数据传输一次执行一次
        req.on('data', data => {
            str += data;
        });
       // 数据传输完成执行一次
        req.on('end', () => {
          const POST = str;  // 完事后,把数据存了
        });
       
    });
    
    server.listen(8080);
    

    5. 文件读取

    const server = http.createServer( (req, res) => {
       // 这把操作放在了服务中
       let file_name = './www' + url;  // url是上面解析的
    
      // fs.readFlie(路径,(err, data) => {  /* data就是读回来的数据 */   })
       fs.readFile(file_name,(err, data) => {
          if ( err )  {
            console.log(‘文件读取失败’, err);
            res.write('404');   // 向前端写404;说明啥都没有请求到
          } else { 
            res.write(data);
          }
          res.end();
       });
    } );
    server.listen(8080);
    

    6. 文件写入(这一波操作其实和上面读取可以单独拿出来用的)

    fs.readFile(路径,  ( err, data ) => {
        //  data 就是读到的数据
        // err 异常时候报的错
    });
     
    // data 就是要写入的数据
    fs.wirteFile(路径,  data , err => {
       // 报的错
    });
    

    以上种种都有坑,我没填完,慢慢学,慢慢填吧 ~~~~~

    7. 总结(再来默写一遍)

    const http = require('http');
    const fs = require('fs');
    const querystring = require('querystring');
    const urllib = require('url');
    
    const server = http.createServer((req, res) => {
      // get 
      let obj = urllib.parse(req.url, true);
      let url = obj.pathname;
      let getData = obj.query;
      
      // post
      let str = '';
      req.on('data', (err, data) => {
        if (err) {
          console.error('数据异常', err);
        } else {
          str += data;
        }
      });
      
      req.on('end',() => {
        const postData = querystring.parse(str);
      });
    
      // 文件读取
      let file_name = './www' + url;
      fs.readFile(file_name, (err, data) => {
         if (err) {
           console.log('文件读取错误', err);
           res.write('404');
        } else {
            res.write(data);
          }
          res.end();
       }) 
    });
    
    server.listen(8080);
    
    

    敲代码终究是一种实践的艺术,正应了时间是检验真理的唯一标准 。 ヾ(◍°∇°◍)ノ゙

    相关文章

      网友评论

        本文标题:nodejs(1)----- 创建一个服务

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