1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Node.js之HTTP模块学习

Node.js之HTTP模块学习

时间:2022-10-12 17:15:50

相关推荐

Node.js之HTTP模块学习

HTTP模块介绍:

nodejs中的http模块封装了一个http服务器模块和一个简易的http客户端。

http.Server是一个基于事件的http服务器

http.request是http客户端工具,用于向http服务器发起请求

如fs模块一样,需要先引用http模块:

var http = require('http'); //读取内置http模块,这个模块提供了http服务

创建HTTP服务器:

res表示response服务器返回给客户端的响应,下面语法表示设置响应头部信息。

1 res.setHeader("Content-type", "text/html;charset=UTF8");2 3 res.writeHead(200, {'Content-Type':'text/html;charset=UTF8'});

以上方法更倾向于使用writeHead,因为可以设置状态码,还能设置多个响应头信息。

1 var http = require("http"); 2 3//req表示request用户的请求 4//res表示response服务器的响应 5 var server = http.createServer(function(req, res) { 6////设置响应报文头,让类型变为html并且是utf8编码 7// res.setHeader("content-type","text/html;charset=UTF-8");//第一种方式 为了HTML显示防止乱码插入响应头 8//一定要注意writeHeader是驼峰写法 9res.writeHeader(200, {"Content-Type": "text/html;charset=UTF-8"}); //第二种方式 当服务器访问200成功是,响应头返回并显示HTML页面防止乱码10res.write('<h1>node.js学习 <h1>');11res.write('<h3>第一种方式 为了HTML显示防止乱码插入响应头</h3>');12res.write('<h3>第二种方式 当服务器访问200成功是,响应头返回并显示HTML页面防止乱码</h3>');13//页面上输出内容,输出内容用write,end表示结束!14res.end('<h1>一定要注意writeHeader是驼峰写法</h1>');15 });16 17 //监听8000端口,默认是80端口,但80被Apache占用了,所以改用800018 server.listen(8000, function(err) {19 20if(err) {21 console.log("服务器开启失败!");22 return;23}24console.log("服务器启动成功,请到127.0.0.100:8000端口中打开查看")25 });

打印结果:

在浏览器中,看不到后端node的源代码:

原因是Nodejs执行在服务器端,语句在服务器被执行、编译,此时发给浏览器的就是执行之后、编译后的纯文本了,不含有计算的。

req(request)的方法:直接console.log()使用就可以。

1 req.url //表示访问路径2 3 req.headers //获取请求头信息4 5 req.headers["user-agent"]//浏览器信息6 7 req.headers["host"]//域名信息8 9 req.connection.remoteAddress //表示访问者的ip地址

node.js是单线程的通过下面代码可以证明:

我们会发现不是每个访问者来了都有新的a值,而是全班共用一个a,每个人访问的时候看到的都是已经被刷过的a值。

1 var http = require("http");2 var a = 0;3 http.createServer(function(req,res){4a++;5res.end(a.toString())6 }).listen(3000);

异步I/O特性获取访问IP 及req.connection.remoteAddress

1 //创建fs模块 2 var fs=require("fs"); 3 //创建http模块 4 var http = require("http"); 5 var server = http.createServer(function(req,res){ 6//用户访问的时候执行的语句。 7console.log(req.connection.remoteAddress + "进门了!我招呼他去!"); 8res.setHeader("Content-Type","text/html;charset=UTF8"); 9 10console.log(req.connection.remoteAddress + "用户开始读1号文件");11fs.readFile("./aaa/01.txt", "utf8", function(err,data1){12console.log(req.connection.remoteAddress + "用户读完毕1号文件,开始读2号文件");13fs.readFile("./aaa/02.txt", "utf8", function(err,data2){14 console.log(req.connection.remoteAddress+"用户读完2号文件,开始发送response");15 16 res.write("<h1>" + data1 +"</h1>");17 res.write("<h1>" + data2 +"</h1>");18 res.end();19});20});21 });22 server.listen(3000)

执行如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。