http模块

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

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

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

参数

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

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

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

      • method:请求方法(如 GETPOST),默认为 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.requesthttp.createServer 方法的详细说明和用法示例,基于你提供的图片信息:


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

功能

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

参数

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

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

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

      • method:请求方法(如 GETPOST),默认为 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(可选,函数):

    • 处理客户端请求的回调函数。

    • 回调函数的参数为:

      • reqhttp.IncomingMessage 对象,表示客户端的请求。
      • reshttp.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 对象
相关推荐
REDcker14 分钟前
前端打包工具 - Rollup 打包工具笔记
前端·笔记
前端大卫16 分钟前
动态监听DOM元素高度变化
前端·javascript
前端大卫30 分钟前
Webpack 老项目的优化实践
前端
开利网络38 分钟前
合规底线:健康产品营销的红线与避坑指南
大数据·前端·人工智能·云计算·1024程序员节
yinuo1 小时前
纯CSS&JS实现:丝滑渐变过渡的动态导航栏
前端
qq. 28040339841 小时前
vue介绍
前端·javascript·vue.js
未来之窗软件服务1 小时前
未来之窗昭和仙君(五十五)标签票据打印模板设计器——东方仙盟筑基期
前端·打印设计器·仙盟创梦ide·东方仙盟·昭和仙君·东方仙盟架构
Mr.Jessy1 小时前
Web APIs 学习第五天:日期对象与DOM节点
开发语言·前端·javascript·学习·html
前端大卫1 小时前
如何统一前端项目的 Node 版本和包管理器?
前端
Hi~晴天大圣2 小时前
HTML onclick用法
前端·html