共计 1881 个字符,预计需要花费 5 分钟才能阅读完成。
前言
大家好,我是 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.request 和http.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 是统一的
小结
好啦,明天的分享就到这里啦,咱们下次再见!