为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Node.js

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);

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



作者:Aaron_Alphabet
链接:https://www.jianshu.com/p/3ae6a8a98ff1


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消