当前位置: 首页 > Web前端 > JavaScript

基于NodeJS的HTTP模块http

时间:2023-03-27 14:51:34 JavaScript

前言大家好,我是Lesedi,今天给大家带来NodeJS中一个非常重要的模块--->http模块,一起来看看吧。引入NodeJS的初衷是希望它可以完全由JavaScript实现,用于服务端开发。NodeJS中的HTTP模块是NodeJS内置的用于创建服务器的模块。让我们看看如何使用HTTP模块。有两种方法可以将网络模块用作服务器。创建一个HTTP服务器,监听HTTP客户端请求并返回响应作为客户端,发起一个HTTP客户端请求,作为服务器获取服务器响应---创建一个简单的服务器importnetworkmoduleconsthttp=require('http')example//导入网络模块consthttp=require('http')//创建HTTP服务器接收数据并监听3000端口http.createServer(function(req,res){//设置响应成功状态码200和内容类型res.writeHead(200,{'Content-Type':'text/plain'})res.end('HelloWorld')}).listen(3000)此时打开浏览器输入localhost:3000。如果看到HelloWorld,说明一个简单的服务器准备好了,创建成功~http.createServer常用来创建服务器API,后面的回调函数存放了想要的操作。它接收两个参数req是request,客户端请求对象;res是response,服务器响应的对象。其中req是http.IncomingMessage的实例res是http.ServerRespons的实例另一种写法//importhttpmoduleconsthttp=require("http");//获取http.Server对象constserver=newhttp.Server();//创建服务器并监听3000端口server.on("request",function(req,res){res.writeHead(200,{"content-type":"text/plain"});res.write("HelloWorld");res.end();}).listen(3000);上面的代码是直接通过创建一个http.Server对象,然后给它添加一个请求事件监听器。实际上,createServer方法本质上是为http.Server对象添加了一个请求事件监听器。所以这两种方式是等价的,具体怎么用就看个人习惯了。作为客户端---发起HTTP请求HTTP-标准库中NodeJS内置的http模块提供了两个函数http.request和http.get,可以实现客户端向HTTP发起的网络请求http.request服务器。下面说百度在首页发起网络请求,看看有什么效果//导入模块consthttp=require('http')constoptions={hostname:'www.baidu.com',//地址端口:80,//端口号method:'GET'//请求方式};constreq=http.request(options,function(res){res.setEncoding("utf-8");//中文编码res.on("data",function(data){console.log(data)//获取网页数据});console.log(res.statusCode);//打印状态码});req.on("error",function(err){console.log(err.message);//错误信息});请求结束();//结束响应在控制台执行这个文件,可以打印出百度首页的HTML代码和响应成功的200状态码。http.get由于get请求方式很常见,http模块提供了方便的API,所以http.get相当于http.requset的简化版。值得注意的是http.get不需要手动调用req.end()http.get('http://www.baidu.com/',function(res){res.setEncoding("utf-8")res.on("data",function(data){console.log(data)//获取网页数据});});执行文件,输出与http.request一致