NodeJS基础之HTTP模块http

在这里插入图片描述

前言

大家好,我是Lesedi,今天带来的是NodeJS中十分重要的模块—>http模块,一起来看看吧

引入

NodeJS的初衷就是希望能够完全由JavaScript来实现服务端开发。而NodeJS中的HTTP模块就是NodeJS内置的用来创建服务器的模块,下面我们来看看怎么使用HTTP模块吧

网络模块有两种使用方式

  • 作为服务端使用,创建一个HTTP服务器,监听HTTP客户端请求并返回响应
  • 作为客户端使用,发起一个HTTP客户端请求,获取服务端响应

作为服务端—创建一个简单服务器

导入网络模块

 const http = require('http')

示例

 //导入网络模块
 const http = require('http')
 //创建了一个HTTP服务器来接收数据并监听3000端口
 http.createServer(function (req, res) {
     //设置响应成功状态码200和内容类型
     res.writeHead(200, {'Content-Type': 'text/plain'})
     res.end('Hello World')
 }).listen(3000)

此时,打开浏览器输入localhost:3000若看到Hello World,则代表一个简单的服务器就创建成功啦~

http.createServer常见是创建服务器的常用API,后面的回调函数存放想要进行的操作。它接收两个参数req即是request,客户端请求对象res即是response,服务器响应的对象.

其中req是http.IncomingMessage的实例 res是http.ServerRespons的实例

另一种写法
 //导入http模块
 const http = require("http");
 //获取http.Server对象
 const server = new http.Server();
 
 //创建服务器,并监听3000端口
 server.on("request",function(req,res) {
     res.writeHead(200,{"content-type":"text/plain"});
     res.write("Hello World");
     res.end();
 }).listen(3000);

以上代码是通过直接创建一个http.Server对象,然后为其添加request事件监听,其实也就说createServer方法其实本质上也是为http.Server对象添加了一个request事件监听。所以两种方法是等价的,怎么使用看个人习惯。

作为客户端—发起HTTP请求

HTTP -标准库

NodeJS内置的http模块提供了http.requesthttp.get两个函数,可以实现由客户端向HTTP服务器发起网络请求

http.request

让我们来对百度首页进行网络请求,看看有什么效果吧

//导入模块
const http = require('http')

const options = {
  hostname: 'www.baidu.com', //地址
  port: 80, //端口号
  method: 'GET' //请求方法
};

const req=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); //报错信息
});
req.end();  //结束响应

在控制台执行该文件,即可打印出百度首页的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是一致的

小结

好啦,今天的分享就到这里啦,我们下次再见!

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值