zoukankan      html  css  js  c++  java
  • 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请求内容
  • 相关阅读:
    第十四周 Leetcode 315. Count of Smaller Numbers After Self(HARD) 主席树
    POJ1050 To the Max 最大子矩阵
    POJ1259 The Picnic 最大空凸包问题 DP
    POJ 3734 Blocks 矩阵递推
    POJ2686 Traveling by Stagecoach 状态压缩DP
    iOS上架ipa上传问题那些事
    深入浅出iOS事件机制
    iOS如何跳到系统设置里的各种设置界面
    坑爹的私有API
    业务层网络请求封装
  • 原文地址:https://www.cnblogs.com/SmileCN/p/3163785.html
Copyright © 2011-2022 走看看