http模块

http模块建立在net模块之上,无须手动管理socket,无须手动组装消息格式

http.request(url[, options][, callback]);

用于发起一个 HTTP 请求。它可以向指定的 URL 发送请求,并处理服务器的响应。

参数:

  1. `url(字符串或 URL 对象):

    • 请求的目标 URL。
    • 示例:"http://example.com"。
  2. options(可选,对象):

    • 配置请求的选项,例如:

      • method:请求方法(如 GET、POST),默认为 GET。
      • headers:请求头信息(对象)。
      • host:目标主机名。
      • port:目标端口号。
  3. 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 发送请求,并处理服务器的响应。

​参数:

  1. ​**url**​(字符串或 URL 对象):

    • 请求的目标 URL。
    • 示例:"http://example.com"。
  2. ​**options**​(可选,对象):

    • 配置请求的选项,例如:

      • method:请求方法(如 GET、POST),默认为 GET。
      • headers:请求头信息(对象)。
      • host:目标主机名。
      • port:目标端口号。
    • 示例:

      css 复制代码
      javascript
      {
          method: "POST",
          headers: {
              "Content-Type": "application/json"
          }
      }
  3. ​**callback**​(可选,函数):

    • 当接收到响应时调用的回调函数。

    • 回调函数的参数为 http.IncomingMessage 对象,表示服务器的响应。

    • 示例:

      ini 复制代码
      javascript
      (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 服务器,用于处理客户端的请求。

参数:

  1. options​(可选,对象):

    • 配置服务器的选项,例如:

      • IncomingMessage:自定义的请求类。
      • ServerResponse:自定义的响应类。
  2. 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 对象
相关推荐
IMPYLH9 分钟前
HTML 的 <td> 元素
前端·html
gnip20 分钟前
Flutter GetX 三件套开发规范(Skill)
前端·flutter
张小姐的猫29 分钟前
【AI大模型接入SDK】 —— 前端页面 & 项目总结与拓展
前端·数据结构·数据库·c++·人工智能·chatgpt
web打印社区32 分钟前
远程打印:WebSocket 与 HTTP 轮询怎么选
前端·vue.js·websocket·网络协议·http·electron·pdf
吴声子夜歌36 分钟前
HTML——庞杂的表单控件元素(一)
前端·html
天天喝旺仔1 小时前
浏览器渲染原理:从解析 HTML/CSS、构建渲染树到重排重绘与首屏优化
前端·javascript·css·性能优化·html
明月_清风1 小时前
前端已死?别急,这可能只是所有行业的开始
前端·ai编程
明月_清风1 小时前
干了 6 年前端,我是怎么一步步转型到 AI 的?
前端·后端·ai编程
乘风gg1 小时前
花了 100 亿 Token 后,我发现 Code is cheap 是最大的谎言
前端·ai编程·claude
IMPYLH1 小时前
HTML 的 <textarea> 元素
前端·html