http模块建立在net模块之上,无须手动管理socket,无须手动组装消息格式
http.request(url[, options][, callback]);
用于发起一个 HTTP 请求。它可以向指定的 URL 发送请求,并处理服务器的响应。
参数:
-
`url(字符串或 URL 对象):
- 请求的目标 URL。
- 示例:
"http://example.com"
。
-
options
(可选,对象):-
配置请求的选项,例如:
method
:请求方法(如GET
、POST
),默认为GET
。headers
:请求头信息(对象)。host
:目标主机名。port
:目标端口号。
-
-
callback
(可选,函数):- 当接收到响应时调用的回调函数。
- 回调函数的参数为
http.IncomingMessage
对象,表示服务器的响应。
没有请求内容时候的写法
js
const http = require("http");
const request = http.request(
"https://duyi.ke.qq.com/",
{
method: "GET"
},
resp => {
console.log("服务器响应的状态码", resp.statusCode);
}
);
request.end();
- 获取服务器响应的状态码:
resp.statusCode
- 获取服务器的响应头:
resp.headers
http.createServer([options][, requestListener]);
用于创建一个 HTTP 服务器,用于处理客户端的请求。 以下是关于 http.request
和 http.createServer
方法的详细说明和用法示例,基于你提供的图片信息:
1. http.request(url[, options][, callback])
功能:
用于发起一个 HTTP 请求。它可以向指定的 URL 发送请求,并处理服务器的响应。
参数:
-
**
url
**(字符串或 URL 对象):- 请求的目标 URL。
- 示例:
"http://example.com"
。
-
**
options
**(可选,对象):-
配置请求的选项,例如:
method
:请求方法(如GET
、POST
),默认为GET
。headers
:请求头信息(对象)。host
:目标主机名。port
:目标端口号。
-
示例:
cssjavascript { method: "POST", headers: { "Content-Type": "application/json" } }
-
-
**
callback
**(可选,函数):-
当接收到响应时调用的回调函数。
-
回调函数的参数为
http.IncomingMessage
对象,表示服务器的响应。 -
示例:
inijavascript (res) => { let data = ""; res.on("data", (chunk) => { data += chunk; }); res.on("end", () => { console.log(data); }); }
-
返回值:
返回一个 http.ClientRequest
对象,用于表示正在进行的请求。
示例:
ini
javascript
const http = require("http");
const req = http.request("http://example.com", (res) => {
let data = "";
res.on("data", (chunk) => {
data += chunk;
});
res.on("end", () => {
console.log(data);
});
});
req.end(); // 结束请求
2. http.createServer([options][, requestListener])
用于创建一个 HTTP 服务器,用于处理客户端的请求。
参数:
-
options
(可选,对象):-
配置服务器的选项,例如:
IncomingMessage
:自定义的请求类。ServerResponse
:自定义的响应类。
-
-
requestListener
(可选,函数):-
处理客户端请求的回调函数。
-
回调函数的参数为:
req
:http.IncomingMessage
对象,表示客户端的请求。res
:http.ServerResponse
对象,用于向客户端发送响应。
-
示例:
js
const http = require("http");
const url = require("url");
function handleReq(req, res) {
console.log("有请求来了!");
const urlObj = url.parse(req.url);
console.log("请求路径", urlObj);
console.log("请求方法", req.method);
console.log("请求头", req.headers);
let body = "";
req.on("data", chunk => {
body += chunk.toString("utf-8");
});
req.on("end", () => {
console.log("请求体", body);
});
}
const server = http.createServer(handleReq);
server.listen(3000, () => {
console.log("服务器已启动,正在监听端口 3000");
});
const http = require("http");
const http = require("http");
const server = http.createServer((req, res) => {
handleReq(req);
res.setHeader("a", "1");
res.setHeader("b", "2");
res.statusCode = 404;
res.write("你好!");
res.end();
});
server.listen(9527, () => {
console.log("服务器已启动,正在监听端口 9527");
});
server.listen(9527);
server.on("listening", () => {
console.log("server listen 9527");
});
总结
- 我是客户端
- 请求:ClientRequest 对象
- 响应:IncomingMessage 对象
- 我是服务器
- 请求:IncomingMessage 对象
- 响应:ServerResponse 对象