Nodejs编程题

## Node.js编程题 ### 题目一:构建HTTP服务器 **描述**: 使用Node.js内置的`http`模块,创建一个简单的HTTP服务器。该服务器应能响应根路径`/`的GET请求,并返回“Hello, World!”。 **要求**: 1. 使用ES6模块语法(`import`/`export`)。 2. 服务器应能处理多个并发连接。 3. 不使用任何第三方库。 **示例代码**: ```javascript // server.js import http from 'http'; const server = http.createServer((req, res) => { if (req.url === '/') { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello, World!'); } }); server.listen(3000, () => { console.log('Server running at http://localhost:3000/'); }); ``` ### 题目二:实现RESTful API **描述**: 设计并实现一个简单的RESTful API,用于管理用户数据。API应支持以下操作: * `GET /users`:获取所有用户列表。 * `POST /users`:创建新用户。 * `GET /users/:id`:获取指定ID的用户信息。 * `PUT /users/:id`:更新指定ID的用户信息。 * `DELETE /users/:id`:删除指定ID的用户。 **要求**: 1. 使用Node.js和Express框架。 2. 数据存储可以使用内存数组或任何其他数据存储方式(如MongoDB、MySQL等),但需自行实现数据访问逻辑。 3. 确保API的安全性和健壮性,包括输入验证和错误处理。 **示例代码**(使用内存数组): ```javascript // app.js import express from 'express'; import bodyParser from 'body-parser'; const app = express(); app.use(bodyParser.json()); let users = []; app.get('/users', (req, res) => { res.json(users); }); app.post('/users', (req, res) => { const user = req.body; users.push(user); res.status(201).json(user); }); app.get('/users/:id', (req, res) => { const user = users.find(u => u.id === parseInt(req.params.id)); if (!user) return res.status(404).send('User not found'); res.json(user); }); app.put('/users/:id', (req, res) => { const user = users.find(u => u.id === parseInt(req.params.id)); if (!user) return res.status(404).send('User not found'); Object.assign(user, req.body); res.json(user); }); app.delete('/users/:id', (req, res) => { const index = users.findIndex(u => u.id === parseInt(req.params.id)); if (index === -1) return res.status(404).send('User not found'); users.splice(index, 1); res.status(204).send(); }); app.listen(3000, () => { console.log('Server running on port 3000'); }); ``` ### 题目三:创建命令行工具 **描述**: 使用Node.js创建一个命令行工具,该工具能够执行以下任务: * 读取用户输入的一串数字。 * 计算这些数字的平均值并输出结果。 **要求**: 1. 使用Node.js的`readline`模块来读取用户输入。 2. 工具应能处理至少10个数字的输入。 3. 输出结果保留两位小数。 **示例代码**: ```javascript // calculator.js import readline from 'readline'; const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question('请输入一串以空格分隔的数字: ', (input) => { const numbers = input.split(' ').map(Number); const sum = numbers.reduce((acc, num) => acc + num, 0); const average = sum / numbers.length; console.log(`平均值是: ${average.toFixed(2)}`); rl.close(); }); ``` 运行此工具后,用户可以输入一串数字,然后程序会计算并输出它们的平均值。