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 对象
相关推荐
fanruitian5 小时前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo5 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk5 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
2501_944525546 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
李白你好7 小时前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端
刘一说8 小时前
Vue 组件不必要的重新渲染问题解析:为什么子组件总在“无故”刷新?
前端·javascript·vue.js
徐同保9 小时前
React useRef 完全指南:在异步回调中访问最新的 props/state引言
前端·javascript·react.js
刘一说9 小时前
Vue 导航守卫未生效问题解析:为什么路由守卫不执行或逻辑失效?
前端·javascript·vue.js
一周七喜h10 小时前
在Vue3和TypeScripts中使用pinia
前端·javascript·vue.js
weixin_3954489110 小时前
main.c_cursor_0202
前端·网络·算法