• node学习笔记(四)


    //Node.js标准库提供了http模块,其中封装了一个高效的http服务器和一个简易的http客户端
    //http.Server是一个基于事件的HTTP服务器,它的核心由Node.js下层c++部分实现,而接口由//Javascript封装,兼顾了高性能与简易性
    
    //http服务器
    var http = require('http');
    http.createServer(function(req,res){
        res.writeHead(200,{'Content-Type','text/html'});
        res.write('<h1>hello node</h1>');
        res.end();
    }).listen(3000);
    
    //这段代码中http.createServer创建了一个http.Server的实例;
    //req(request):请求,res(response):响应
    //响应代码200,表示成功;
    //指定相应头为{'Content-Type','text/html'};
    //然后写入相应体
    //最后通过res.end();结束响应并发送
    //listen()函数,启动服务器并且监听3000端口
    
    //Event.Emitter提供了以下几个事件
    //request:当客户端请求到来时,该事件被触发,提供2个参数req和res,分别是http.ServerRequest和http.ServerResponse的实例,表示请求和响应信息
    //connection:当TCP连接建立时该事件被触发,提供一个参数socket为net.Socket的实例,connection的粒度要大于request,因为客户端在keep-alive下可能会在同
    //一连接内发送多次请求
    //close:当服务器关闭时触发,注意不是用户断开连接时
    
    
    //http.ServerRequest();是http请求的信息,一般由http.request发送
    //由于请求体可能相对较长,需要一定的时间传输,因此http.ServerRequest()提供了3个事件用于控制请求体传输
    //data:当请求体到来时触发,该事件提供一个参数chunk,表示接受到的数据,如果该事件没有被监听,那么请求体将会被抛弃,该事件可能会被调用多次
    //end:当请体求传输数据完成时,该事件被触发,此后将不会有数据到来
    //close:用户当前请求结束时,该事件被触发,不同于end,用户强制中终止了传输,也还是调用close
    
    //http.ServerRequest的属性
    //complete    客户端请求是否已经发送完成
    //httpVersion    http协议版本,通常是1.0或1.1
    //method    如:GET,POST,PUT,DELETE等
    //url        原始的请求路径,例如/static/image/x.jpg或/user?name=smile
    //headers    http请求头
    //trailers    http请求尾(不常见)
    //connection    当前http连接套接字,为net.Socket的实例
    //socket    connection的别名
    //client    client属性的别名
    
    
    //querystring
    //querystring.parse && querystring.stringify
    //用法和Json.parse,Json.stringify几乎相同
    
    @querystring.parse;
    var str = 'name=smile&age=20&sex=male';
    
    console.log(querystring.parse(str));
    
    //{name:smile,age:20,sex:male};
    
    @querystring.stringify
    var querystring = require('querystring');
    
    var str = {name:'smile',parents:['zq','wry'],age:21};
    console.log(querystring.stringify(str));
    
    //name=smile&parents=zq&parents=wry&age=21;
    
    
    //获取get请求内容
    var url = require('url');
    
    //ex:
    //http://127.0.0.1:3000/user?name=smile
    // search: '?name=smile'
    // query: { name: 'smile' }
    // pathname: '/user'
    // path: '/user?name=smile'
    // href: '/user?name=smile' }
    
    //其中query就是我们所谓的get请求,
    //通过url.parse将原始的path解析为一个对象
    //路径是pathname
    
    //获取post请求内容
  • 相关阅读:
    手把手教你进行Python虚拟环境配置
    40行代码教你利用Python网络爬虫批量抓取小视频
    用Python模拟技巧带你实现自动抽屉登录&自动点赞
    干货|Python大佬手把手带你破解哔哩哔哩网滑动验证(下篇)
    干货|Python大佬手把手带你破解哔哩哔哩网滑动验证(上篇)
    Spring 常见的事务管理、事务的传播特性、隔离级别
    Spring AOP注解
    linux 内核的futex pi-support,即pi-futex使用rt_mutex委托
    pthread的lowlevellock
    linux 内核的rt_mutex (realtime互斥体)
  • 原文地址:https://www.cnblogs.com/SmileCN/p/3163785.html
Copyright © 2020-2023  润新知