美文网首页
2019-10-02

2019-10-02

作者: 悄然离去_2f39 | 来源:发表于2019-10-02 14:48 被阅读0次

哈哈哈哈

this is test!!!!

// 通过node实现一个http服务
// 都是通过核心模块来提供  http模块
const http = require('http');

// 服务器要有特定的ip 和端口号
let server = http.createServer();
let querystring = require('querystring');
let url = require('url'); // url.parse

// 如果别人请求我,我需要去解析请求
server.on('request',(req,res)=>{
    // req 代表的是客户端
    // res 代表的就是服务端
    
    // 1) 请求行
    console.log(req.method); // 方法名大写
    let {pathname,query} = url.parse(req.url,true)
    console.log(pathname,query); // 请求路径  / 表示首页  url是不包含# hash的
    console.log(req.httpVersion);
    // 2) 请求头
    console.log(req.headers); // 取header都是小写
    // 3) 获取请求体
    let arr = []
    req.on('data',function(chunk){
        arr.push(chunk);
        console.log(chunk.toString()); // 流的原理 push(null) data方法不一定会触发
    });
    req.on('end',function(){
        console.log('end'); // end是一定触发
        console.log()

        // 响应行 头 体
        res.statusCode = 200; // 响应状态码
        // res.setHeader('Content-Length','1');
        res.setHeader('Content-Type','text/plain;charset=utf-8');
        let content = Buffer.concat(arr).toString();
        let type = req.headers['content-type']
        if(type === 'application/json'){
            let obj = JSON.parse(content)
            return res.end(obj.a+'');
        }else if(type === 'application/x-www-form-urlencoded'){
            // 第二个参数 字段间的分隔符 第三个参数 是key value分隔符
            let obj = querystring.parse(content);
            return res.end(obj.a+'');
            //  let str = 'a=1; b=2'
            //  str.replace(/([^=&])=([^&=])/g,function(){
            //      console.log(arguments[1],arguments[2])
            //  })
        }else{ //  如果不支持的就默认返回
            return res.end(content);
        }
       
    });
    
})

// 开启一个端口号
let port = 3001;
server.listen(port,()=>{
    console.log(`server start ${port}`)
});

// 如果端口被占用了 自动+1
server.on('error',(err)=>{
    if(err.errno === 'EADDRINUSE'){
        server.listen(++port)
    }
})

// 每次服务端代码发生变化 都需要重启服务
// nodemon node的监视器 监视文件变化的
// sudo npm install nodemon -g   nodemon 文件名  (可以增加配置文件)
// pm2





// 一个完整的url
// const requestUrl = `http://username:password@www.baidu.com:80/s?offset=1&limit=30#app`

// let result = url.parse(requestUrl,true);
// console.log(result)
/*
{
    protocol: 'http:',
    slashes: true,  是否有/
    auth: 'username:password', 用户信息
    host: 'www.baidu.com:80',
    port: '80',
    hostname: 'www.baidu.com', // 主机名
    hash: '#app',
    query: 'offset=1&limit=30',  查询参数
    pathname: '/s',  请求路径 资源路由
    path: '/s?offset=1&limit=30',
    href:
     'http://username:password@www.baidu.com:80/s?offset=1&limit=30#app' }

*/

相关文章

  • 我眼中的好电影(上)

    ——《我和我的祖国》观影2019-10-02 将所有...

  • 【百人百天百炼】第四天

    云之歌 字数 430 · 阅读 0 2019-10-02 04:35 今天是2019年10月1日,国庆70周年。上...

  • 2019-10-02

    2019-10-02 姓名:乐美清 公司:宁波华光 《六项精进》第340期 反省二组学员;515期, 反省二组志工...

  • 2019-10-02

    2019-10-02 打卡人:王素琴 公司:阜阳市豹子头服饰科技有限公司【日精进打卡第517天 【知~学习】 姓...

  • 普门品略述之七

    原文地址:普门品略述之七 2019-10-02 16:42:26 无尽意菩萨白佛言:"世尊,观世音菩萨云何游此娑婆...

  • 老街巷

    文/夏深荔枝知不知 2019-10-02 旧时檐前燕 衔来新枝筑枯巢 匆忙 院前篱笆破败 草木也疯长 光阴在年轮生...

  • 岁月渡口,来罐红牛

    2019-10-02 晴 北京·昌平 狗窝 跟了一把风,大晚上的去永旺看了《我和我的祖国》,我一不善于观察生活的人...

  • 2019-10-02

    闵杏郁,温州圣卡萝服饰有限公司;63期同修、79期志工、116期志工、160期志工、203期志工、224期、258...

  • 2019-10-02

    2019.10.02日记 今天在家睡了一天,浑浑噩噩的。 1.晚上和玉玉出去压马路,说着国庆节见不了面下次见可能就...

  • 2019-10-02

    十月二日 如果你是在这天出生,你是一个善良和甜蜜的人,十分受人喜爱和欣赏,你会有很多朋友,而且不会为自己树立对立面...

网友评论

      本文标题:2019-10-02

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