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();
});
```
运行此工具后,用户可以输入一串数字,然后程序会计算并输出它们的平均值。