Node.js 知识量:9 - 37 - 115
HTTP(HyperText Transfer Protocol)是一种应用层协议,用于在网络中传输超文本(例如网页)。HTTP 的基本传输单位是“请求”和“响应”。当一个客户端(如Web浏览器)想获取某个网页时,它会向服务器发送一个HTTP请求,然后服务器会返回一个HTTP响应,其中包含所请求的网页。
HTTP 协议的主要特点如下:
无连接:每次请求/响应交换之后,连接即被关闭。需要再次交换时,需要重新建立连接。
无状态:服务器不会为每个请求保持状态。也就是说,同一个客户端的连续请求之间没有关联。
支持 B/S 模式:即浏览器(Browser)和服务器(Server)之间的通信。
简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、POST、PUT、DELETE 等。由于 HTTP 协议简单,使得http应用广泛。
灵活:HTTP 允许传输任意类型的数据,传输的类型由 Content-Type 加以标记。
无须长时间连接:HTTP 1.0 通信都是短时间的,一旦通信完成,连接即被关闭。一些应用需要更长时间的连接,它们需要创建持久的连接(HTTP 1.1)。
头部自定义:HTTP 头部字段可以包含大量关于请求和响应的信息,以及自定义的头部字段。
HTTP/1.1 是 HTTP 的主要版本,它引入了持久连接、缓存、范围请求等特性。HTTP/2 是 HTTP 的最新版本,它对 HTTP/1.1 进行了改进,包括多路复用、头部压缩、服务器推送等特性。
Node.js中的http模块是用于创建HTTP服务器的核心模块之一。通过http模块,可以轻松地创建自己的HTTP服务器,并处理HTTP请求和响应。
要使用http模块,需要先导入它。以下是一个简单的示例,演示如何使用http模块创建一个HTTP服务器:
const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello, World!'); }); server.listen(3000, () => { console.log('Server listening on port 3000'); });
在上面的示例中,首先通过require('http')导入了http模块。然后,使用http.createServer()方法创建了一个HTTP服务器。这个方法接受一个回调函数作为参数,该回调函数会在每次接收到请求时被调用。在回调函数中,通过res.writeHead()设置了响应的头部信息,并通过res.end()发送了响应内容。最后,使用server.listen()方法指定了服务器监听的端口号,并打印了一条消息表示服务器正在监听。
Node.js的http模块提供了创建HTTP客户端的工具,用于向HTTP服务器发起请求。具体来说,可以使用http模块中的http.request()方法来创建一个HTTP客户端。
http.request()方法接受一个选项对象和一个回调函数作为参数。选项对象包含请求的参数,如请求的URL、请求方法、请求头等。回调函数在请求完成后被调用,并接收到一个参数,该参数是一个http.ClientResponse的实例,表示服务器的响应。
以下是一个使用http.request()方法创建HTTP客户端的示例:
const http = require('http'); const options = { hostname: 'www.example.com', port: 80, path: '/', method: 'GET' }; const req = http.request(options, (res) => { console.log(`statusCode: ${res.statusCode}`); res.on('data', (chunk) => { console.log(chunk.toString()); }); }); req.on('error', (e) => { console.error(`请求遇到问题: ${e.message}`); }); req.end();
在上面的示例中,首先定义了一个选项对象,指定了请求的URL、端口、路径和请求方法。然后,使用http.request()方法创建了一个HTTP客户端,并将回调函数传递给该方法。在回调函数中,打印了响应的状态码,并监听了响应的数据事件来处理响应内容。最后,通过调用req.end()发送了请求。
需要注意的是,http模块还提供了http.get()方法,该方法是一个更简单的HTTP客户端工具,用于向服务器发起GET请求。如果只需要发送简单的GET请求,可以使用http.get()方法来简化代码。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6