node.js 的HTTP模块

本文详细介绍了Node.js中的HTTP模块,包括如何使用该模块创建web服务器、监听端口、处理请求和响应的方法,以及如何利用HTTP模块实现客户端的网络请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP模块是什么

http模块是node官方提供的,用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就可以把一台电脑变成一台web服务器,从而对外提供web资源服务

导入HTTP模块

const http = require('http')

监听主机和端口号

通过listen方法来开启服务器,并且在某一个主机和端口上监听网络请求

listen函数有三个参数:

  • 端口port: 可以不传, 系统会默认分配端
  • 主机host: 通常可以传入localhost、ip地址127.0.0.1,或者ip地址0.0.0.0,默认是0.0.0.0
  • 回调函数:服务器启动成功时的回调函数
// 启动服务器,并且制定端口号和主机
server.listen(8888, '0.0.0.0', () => {
  console.log("服务器启动成功~");
});

 response对象

返回响应结果

如果我们希望给客户端响应的结果数据,可以通过两种方式:

  • Write方法:这种方式是直接写出数据,但是并没有关闭流;
  • end方法:这种方式是写出最后的数据,并且写出后会关闭流;
const http = require('http');

const server = http.createServer((req, res) => {

  // 响应数据的方式有两个:
  res.write("Hello World");
  res.write("Hello Response");
  res.end("message end");
});

server.listen(8000, () => {
  console.log("服务器启动🚀~")
});

返回状态码

设置状态码常见的有两种方式:

res.statusCode = 400;
res.writeHead(200);

响应头文件

返回头部信息,主要有两种方式:

  • res.setHeader:一次写入一个头部信息;
  • res.writeHead:同时写入header和status;

 

res.setHeader("Content-Type", "application/json;charset=utf8");

res.writeHead(200, {
  "Content-Type": "application/json;charset=utf8"
})

request对象

在向服务器发送请求时,我们会携带很多信息如:

  1. 本次请求的URL,服务器需要根据不同的URL进行不同的处理
  2. 本次请求的请求方式,比如GET、POST请求传入的参数和处理的方式是不同的
  3. 本次请求的 headers 中也会携带一些信息,比如客户端信息、接受数据的格式、支持的编码格式等
  4. 这些信息,Node会帮助我们封装到一个request的对象中,我们可以直接来处理这个request对象
    const http = require('http');
    
    // 创建一个web服务器
    const server = http.createServer((req, res) => {
      // request对象中封装了客户端给我们服务器传递过来的所有信息
      console.log(req.url);
      console.log(req.method);
      console.log(req.headers);
    
      res.end("Hello Server");
    });
    
    // 启动服务器,并且制定端口号和主机
    server.listen(8888, '0.0.0.0', () => {
      console.log("服务器启动成功~");
    });
    
    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    http发送网络请求 

http.get("http://localhost:8000", (res) => {
  res.on('data', data => {
    console.log(data.toString());
    console.log(JSON.parse(data.toString()));
  })
});

发送post请求:

const req = http.request({
  method: 'POST',
  hostname: "localhost",
  port: 8000
}, (res) => {
  res.on('data', data => {
    console.log(data.toString());
    console.log(JSON.parse(data.toString()));
  })
})

req.on('error', err => {
  console.log(err);
})

req.end();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值