深刻理解Node.js的HTTP模块
序
我们知道传统的HTPP服务器将由Aphche、Nginx和IIS等软件提供服务,但nodejs不需要它。nodejs提供了http模块,可以用来构建服务器本身。而且http模块采用C语言实现,性能可靠。它封装了一个高校HTTP服务器和一个简单的HTTP客户端。HTTPserver是一个基于事件的http。服务器;HTTP.request是一个HTTP客户端工具,用于向http服务器发送请求,实现内容抓取。
一、HTTP服务器
Http。Server提供了一套低封装级别的API,只是流量控制和简单的消息分析。
你可以使用http。CreateServer()来创建http。服务器实例。
var http=require(' http ');http.createServer(函数(请求,响应){ response.writeHead(200,{ ' Content-Type ' : ' text/html ' });回应.写入('服务器启动!');response . end(' Hello World \ n ');}).听(8080,' 127 . 0 . 0 . 1 ');控制台.日志('服务器运行在端口8080上');Http.createServer创建一个Http实例。服务器,它使用一个函数作为http请求处理函数。该函数接受两个参数,即请求对象(req)和响应对象(res)。
二.http。服务器请求
HTTP。ServerRequest是http请求信息。一般由http的请求事件发送。服务器,并作为第一个参数传递。
HTTP请求一般分为两部分:请求头和请求体。
Http。ServerRequest提供了以下三个事件来控制请求体的传输。
(1)数据:当请求体数据到达时,触发此事件。该事件提供一个参数中继,指示接收到的数据。如果事件未被监控,请求者将被丢弃。
(2)结束:请求体数据传输完成时触发;
(3)关闭:当用户当前请求结束时触发。
服务器请求的属性
3.获取获取请求的内容
http提供的属性。ServerRequest与PHP中的$_GET或$_POST并不相似,那么我们如何接受来自客户端的表单请求呢?由于GET请求直接嵌入在路径中,因此以下内容可以手动解释为GET请求的参数。
示例:
var http=require(' http ');var URL=require(' URL ');var util=require(' util ');函数(req,res) { res.writeHead(200,{ ' Content-Type ' : ' text/html ' });RES . end(util . inspect(URL . parse(req . URL,true)));}).听(3000);访问http://127.0.0.1:3000/?Name=degage=22,返回的结果如下:
Url { protocol: null,slashes: null,auth: null,host: null,port: null,hostname: null,hash: null,search: '?name=dengage=22 ',query: { name: 'deng ',age: '22' },pathname: '/',path: '/?name=dengage=22 ',href: '/?Name=degage=22'}通过url.parse,原始路径被解释为一个对象,其中查询是请求的内容。
4.获取开机自检请求的内容
POST请求的全部内容都在请求正文中。
动词(verb的缩写)http。服务器响应
Http。ServerReponse是返回给客户端的信息,它决定了用户最终可以看到的结果,通常作为res参数在http.createserver (function (req,res) {})函数中传递。
Http。ServerReponse有三个重要的成员函数,用于返回响应头、响应内容和结束请求。
写标头(状态代码,[标头]):向请求客户端发送响应标头。StatusCode是HTTP状态代码,headers是表示响应头属性的对象。
Response.write(data,[encoding]):将相应的内容发送给请求客户端。数据表示要发送的内容,编码表示编码方式(默认为UTF-8);
response . End([数据],[编码]):结束响应并通知客户端所有传输都已完成。当所有要返回的内容都已发送后,必须调用该函数一次。如果不调用此函数,客户端将始终处于等待状态。
不及物动词HTTP客户端
http模块提供了http.request和http.get两个函数,作为客户端向HTTP服务器发送请求。
1.http.request()
HTTP.request(选项,回调)启动一个HTTP请求。
选项的常见参数如下:
主持人:请求网站的域名或互联网协议(互联网协议)地址;
端口:请求网站的端口,默认是80;
方法:请求方法,默认是得到
路径:请求的相对于根的路径,默认是"/";
标题:请求头的内容;
var http=require(' http ');var查询字符串=require('查询字符串');var contents=查询字符串。stringify({姓名: '邓,年龄: 22 });var options={ host : ' dengzhr。com ',method: 'POST ',header RS : { ' Content-Type ' : ' application/x-www-form-URL编码',' Content-Length ' :内容。长度} };var req=http.request(options,function(RES){ RES . setencoding(' utf8 ');res.on('data ',function(data){ console。日志(数据);});});req.write(目录);请求。end();在发送邮政请求时,一定不要忘记通过req.end()结束请求,否则服务器将不会收到消息。
2.http.get()
http.get(选项,回调)是超文本传送协议(超文本传输协议的缩写)模块的用于处理得到请求的更加简便的方法。不需要手动调用req.end()。
实例:
var http=require(' http ');http。get({ host : ' dengzhr。com ' },function(RES){ RES . setencoding(' utf8 ');res.on('data ',function(data){ console。日志(数据);});});总结
以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。
版权声明:深刻理解Node.js的HTTP模块是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。