NodeJs 内置模块 http 介绍

创建 http 服务器,实现基于http协议的网络通信
如何创建 http 服务器?
如何处理 http 请求?
如何处理 http 响应?

const http = require('http')
const url = require('node:url')
const qs = require('node:querystring')
//创建一个对象
const userInfo = {}
//创建服务
const server = http.createServer((req, res) => {
  const { pathname, query } = url.parse(req.url) //获取get请求的参数
  //监听GET接口
  if (pathname === '/list' && req.method === 'GET') {
    const { name, age } = qs.parse(query)
    userInfo.name = name
    userInfo.age = age
    res.end(JSON.stringify({ code: 200, data: { userInfo }, msg: 'success' }))
  }

  //监听POST接口
  if (pathname === '/update' && req.method === 'POST') {
    let str = ''
    req.on('data', (chunk) => {
      str += chunk
    })
    req.on('end', () => {
      const { name, age } = JSON.parse(str)
      userInfo.name = name
      userInfo.age = age
      //设置header信息
      res.setHeader('User-Age', 18)
      res.writeHead(201, 'okk', { 'User-Name': 'coder-monkey' })
      res.end(JSON.stringify({ code: 200, data: { userInfo }, msg: 'success' }))
    })
  }
})
//开启服务
server.listen(9000, () => {
  console.log('server start')
})

Node.js 提供了丰富的内置模块,这些模块无需额外安装即可直接使用,涵盖了文件系统、网络、流处理、路径操作等多个方面。以下是常见的内置模块分类及代表性模块列表: ### 核心模块 1. **`fs`(文件系统)** 用于执行文件的读写、删除、重命名等操作。例如: ```javascript const fs = require('fs'); fs.readFile('example.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); }); ``` 该模块支持同步和异步操作,适用于本地文件系统的处理[^5]。 2. **`path`(路径处理)** 提供了用于处理和转换文件路径的工具函数,如 `path.join()`、`path.basename()` 等。 ```javascript const path = require('path'); console.log(path.join(__dirname, 'files', 'example.txt')); ``` 该模块确保路径在不同操作系统下保持一致性。 3. **`http` 和 `https`(网络请求)** 用于创建 HTTPHTTPS 服务器或客户端。例如,创建一个简单的 HTTP 服务器: ```javascript const http = require('http'); const server = http.createServer((req, res) => { res.end('Hello, world!'); }); server.listen(3000); ``` 这两个模块是构建 Web 服务的基础组件[^4]。 4. **`stream`(流处理)** Node.js 中的流是一种处理数据的方式,适用于大文件读写、网络传输等场景。流分为可读流、可写流、双工流和转换流。 ```javascript const fs = require('fs'); const readStream = fs.createReadStream('largeFile.txt'); readStream.on('data', (chunk) => { console.log(`Received ${chunk.length} bytes of data.`); }); ``` 流机制有助于高效处理数据,避免内存溢出问题。 5. **`events`(事件驱动)** 提供了事件发射器(EventEmitter)类,用于实现事件监听和触发机制。 ```javascript const EventEmitter = require('events'); const myEmitter = new EventEmitter(); myEmitter.on('event', () => { console.log('An event occurred!'); }); myEmitter.emit('event'); ``` 事件驱动是 Node.js 异步编程的核心机制之一[^3]。 6. **`os`(操作系统信息)** 提供了与操作系统相关的实用方法和属性,如获取 CPU 信息、内存使用情况等。 ```javascript const os = require('os'); console.log(`Platform: ${os.platform()}`); console.log(`Free memory: ${os.freemem()}`); ``` 7. **`util`(工具函数)** 包含一些实用函数,如格式化字符串、继承机制等。 ```javascript const util = require('util'); const obj = { name: 'Node.js', version: 'v18.0.0' }; console.log(util.inspect(obj)); ``` 8. **`process`(进程控制)** 提供了与当前 Node.js 进程相关的属性和方法,如获取命令行参数、退出进程等。 ```javascript console.log(`Arguments: ${process.argv}`); process.exit(0); ``` 该模块常用于脚本开发和系统级操作[^4]。 9. **`buffer`(二进制数据处理)** 用于处理二进制数据,特别是在网络传输和文件操作中。 ```javascript const buf = Buffer.from('Hello Node.js', 'utf8'); console.log(buf.toString('hex')); ``` 10. **`crypto`(加密)** 提供了加密和哈希算法的实现,支持多种加密标准。 ```javascript const crypto = require('crypto'); const hash = crypto.createHash('sha256'); hash.update('Hello, world!'); console.log(hash.digest('hex')); ``` ### 其他常用模块 - **`child_process`(子进程)** 用于创建和管理子进程,适用于执行外部命令或脚本。 - **`cluster`(集群)** 提供了多进程支持,利用多核 CPU 提升性能。 - **`zlib`(压缩解压)** 支持 Gzip、Deflate 等压缩算法,常用于网络传输优化。 - **`dns`(域名解析)** 提供了 DNS 查询功能,支持异步解析域名。 Node.js 的内置模块构成了其强大的生态系统基础,开发者可以通过这些模块实现从文件操作到网络服务的多种功能。结合模块系统的设计理念,Node.js 文件与模块一一对应,使得模块化开发更加清晰和高效[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值