Node.js 教程
Node.js 基础
Node.js 概述
Node.js 环境搭建
Node.js 基础语法
Node.js 模块
Node.js 异步编程
Node.js 核心模块
Node.js文件系统
Node.js路径模块(path)
Node.js的HTTP模块
Node.js的url模块
Node.js流模块(stream)
Node.js 常用工具与框架
npm 与包管理
Express 框架
数据库操作
Socket.io 与 WebSocket
Node.js 实战项目
Web 应用开发
API 开发
爬虫应用
自动化脚本
Node.js部署与优化
部署 Node.js 应用
Node.js性能优化
Node.js应用的安全性
Node.js 高级话题
Node.js中的设计模式
TypeScript 与 Node.js
GraphQL 与 API 开发
-
+
首页
Node.js的HTTP模块
以下是如何使用 Node.js 提供的 HTTP 模块来构建 Web 服务器的详细介绍: ### **1. 创建 Web 服务器** Node.js 的 `http` 模块提供了 `http.createServer` 方法,用于创建 HTTP 服务器。 ```javascript const http = require('http'); // 创建服务器 const server = http.createServer((req, res) => { // 在这里处理请求和响应 res.writeHead(200, { 'Content-Type': 'text/plain' }); // 设置响应头 res.end('Hello, World!'); // 发送响应体 }); // 启动服务器,监听指定的端口 const port = 3000; server.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); }); ``` #### **运行这段代码**: - 保存文件为 `server.js`。 - 在终端中运行 `node server.js`。 - 打开浏览器并访问 `http://localhost:3000`,你将看到 "Hello, World!"。 ### **2. 监听请求事件** `http.createServer` 的回调函数会在每次 HTTP 请求到达时被触发。可以通过 `req.method` 和 `req.url` 来获取请求方法和路径。 ```javascript const http = require('http'); const server = http.createServer((req, res) => { console.log(`Request method: ${req.method}`); // 打印请求方法 console.log(`Request URL: ${req.url}`); // 打印请求 URL // 根据请求路径返回不同内容 if (req.url === '/about') { res.end('About Page'); } else { res.end('Home Page'); } }); const port = 3000; server.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); }); ``` #### **运行这段代码**: - 访问 `http://localhost:3000` 时,输出 "Home Page"。 - 访问 `http://localhost:3000/about` 时,输出 "About Page"。 ### **3. 设置响应头和响应体** 可以通过 `res.setHeader` 方法设置响应头,通过 `res.write` 或 `res.end` 方法发送响应体。 ```javascript const http = require('http'); const server = http.createServer((req, res) => { // 设置响应头 res.statusCode = 200; // 设置 HTTP 状态码 res.setHeader('Content-Type', 'text/html'); // 设置 Content-Type // 发送响应体 res.write('<h1>Hello, World!</h1>'); // 发送 HTML 内容 res.end('<p>This is a Node.js server.</p> '); }); const port = 3000; server.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); }); ``` ### **4. 处理 GET 和 POST 请求** HTTP 模块可以处理不同类型的 HTTP 请求,如 GET 和 POST。 ```javascript const http = require('http'); const { parse } = require('querystring'); // 解析 POST 数据 const server = http.createServer((req, res) => { if (req.method === 'GET') { console.log('Handling GET request'); res.end('Received GET request'); } else if (req.method === 'POST') { console.log('Handling POST request'); // 解析 POST 数据 let body = ''; req.on('data', chunk => { body += chunk.toString(); }); req.on('end', () => { const data = parse(body); console.log(data); res.end('Received POST request'); }); } }); const port = 3000; server.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); }); ``` ### **5. 错误处理** 可以监听 `error` 事件来捕获服务器错误。 ```javascript const http = require('http'); const server = http.createServer((req, res) => { res.end('Hello, World!'); }); server.on('error', (error) => { console.error('Server error:', error); }); const port = 3000; server.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); }); ``` ### **总结** - Node.js 的 HTTP 模块提供了基本的 HTTP 服务器功能。 - `http.createServer` 方法用于创建服务器。 - 通过 `req.method` 和 `req.url` 可以获取请求方法和路径。 - 使用 `res.setHeader` 设置响应头,`res.write` 和 `res.end` 发送响应体。 - 可以监听 `error` 事件来捕获服务器错误。 虽然 HTTP 模块功能强大,但在实际开发中,通常会使用更高级的框架(如 Express.js)来简化开发流程。
wwbang
2025年2月26日 18:12
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码