推荐答案
// www.javascriptcn.com code example
const http = require('http');
const url = require('url');
const querystring = require('querystring');
const server = http.createServer((req, res) => {
const { method, url: reqUrl } = req;
const parsedUrl = url.parse(reqUrl, true);
if (method === 'GET') {
// 处理GET请求
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end(`GET请求参数: ${JSON.stringify(parsedUrl.query)}`);
} else if (method === 'POST') {
// 处理POST请求
let body = '';
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
const postData = querystring.parse(body);
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end(`POST请求参数: ${JSON.stringify(postData)}`);
});
} else {
res.writeHead(405, { 'Content-Type': 'text/plain' });
res.end('Method Not Allowed');
}
});
server.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000/');
});本题详细解读
1. 引入必要的模块
http 模块用于创建HTTP服务器。
url 模块用于解析URL。
querystring 模块用于解析POST请求的请求体。
2. 创建HTTP服务器
- 使用
http.createServer() 方法创建一个HTTP服务器实例。
- 回调函数接收
req(请求对象)和 res(响应对象)两个参数。
3. 处理GET请求
- 通过
req.method 判断请求方法是否为 GET。
- 使用
url.parse() 方法解析请求的URL,获取查询参数。
- 将查询参数通过
res.end() 方法返回给客户端。
4. 处理POST请求
- 通过
req.method 判断请求方法是否为 POST。
- 使用
req.on('data') 事件监听器收集请求体数据。
- 使用
req.on('end') 事件监听器在请求体数据接收完毕后,解析请求体数据。
- 将解析后的POST请求参数通过
res.end() 方法返回给客户端。
5. 处理其他请求方法
- 如果请求方法不是
GET 或 POST,返回 405 Method Not Allowed 状态码。
6. 启动服务器
- 使用
server.listen() 方法启动服务器,监听指定端口(如3000)。