//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请求内容