在 Node.js 中,HTTP 模块是常用的模块之一,它提供了创建 HTTP 客户端和服务端的功能。本文将深入介绍 HTTP 模块的使用,包括创建 HTTP 服务、处理请求和响应、处理文件上传等。
创建 HTTP 服务
使用 HTTP 模块创建 HTTP 服务非常简单,只需要调用 http.createServer()
方法即可。以下是一个简单的例子:
// javascriptcn.com 代码示例 const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(3000, () => { console.log('Server running at http://localhost:3000/'); });
在上面的例子中,我们创建了一个 HTTP 服务,并将它监听在本地的 3000 端口上。当有请求到达时,服务会返回一个 HTTP 状态码为 200 的文本响应。
处理请求和响应
当有请求到达时,HTTP 服务会触发 request
事件,我们可以通过监听该事件来处理请求和响应。以下是一个处理 GET 请求的例子:
// javascriptcn.com 代码示例 const http = require('http'); const url = require('url'); const server = http.createServer((req, res) => { const { pathname, query } = url.parse(req.url, true); if (req.method === 'GET') { if (pathname === '/hello') { const name = query.name || 'World'; res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end(`Hello ${name}!\n`); } else { res.statusCode = 404; res.setHeader('Content-Type', 'text/plain'); res.end('Not Found\n'); } } }); server.listen(3000, () => { console.log('Server running at http://localhost:3000/'); });
在上面的例子中,我们通过 url.parse()
方法解析了请求的 URL,然后根据请求的方法和路径来处理请求和响应。当请求的路径为 /hello
时,我们会返回一个带有参数的文本响应。
处理文件上传
HTTP 模块还提供了处理文件上传的功能。我们可以使用 formidable
模块来解析文件上传的表单数据。以下是一个处理文件上传的例子:
// javascriptcn.com 代码示例 const http = require('http'); const formidable = require('formidable'); const server = http.createServer((req, res) => { if (req.method === 'POST') { const form = new formidable.IncomingForm(); form.parse(req, (err, fields, files) => { if (err) { console.error(err); res.statusCode = 500; res.end('Internal Server Error'); return; } res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end(`Received ${files.file.name} (${files.file.size} bytes)\n`); }); } else { res.statusCode = 405; res.setHeader('Content-Type', 'text/plain'); res.end('Method Not Allowed\n'); } }); server.listen(3000, () => { console.log('Server running at http://localhost:3000/'); });
在上面的例子中,我们使用了 formidable.IncomingForm()
方法来创建一个表单解析器,然后通过 form.parse()
方法来解析表单数据。当解析成功后,我们会返回一个带有上传文件信息的文本响应。
总结
本文介绍了 Node.js 中 HTTP 模块的使用,包括创建 HTTP 服务、处理请求和响应、处理文件上传等。这些功能对于前端开发者来说非常有用,希望本文能够对读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653cb04c7d4982a6eb6ba45b