帮我用node.js写这个接口吧,要连接数据库的
时间: 2024-03-10 14:50:25 浏览: 26
好的,以下是一个简单的使用 Node.js + Express + MySQL 实现登录接口的示例:
```javascript
const express = require('express');
const mysql = require('mysql');
const app = express();
// 连接数据库
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'my_database'
});
connection.connect((err) => {
if (err) {
console.error('Error connecting to database: ' + err.stack);
return;
}
console.log('Connected to database with id ' + connection.threadId);
});
// 解析请求体中的 JSON 数据
app.use(express.json());
// 登录接口
app.post('/login', (req, res) => {
const username = req.body.username;
const password = req.body.password;
const sql = 'SELECT * FROM users WHERE username = ? AND password = ?';
connection.query(sql, [username, password], (error, results, fields) => {
if (error) {
console.error('Error querying database: ' + error.stack);
res.sendStatus(500);
return;
}
if (results.length === 1) {
// 登录成功,生成 token 并返回给客户端
const token = 'my_token';
res.json({ token });
} else {
// 登录失败,返回错误信息
res.status(401).json({ message: 'Invalid username or password' });
}
});
});
const port = 3000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
```
以上代码中,我们使用 `mysql` 模块连接 MySQL 数据库,并在登录接口中使用查询语句验证用户名和密码是否正确。如果验证通过,就生成一个 token 并返回给客户端。如果验证失败,就返回一个 401 错误。注意,为了防止 SQL 注入攻击,我们在查询语句中使用了占位符。
当然,这只是一个简单的示例,实际应用中需要进行更多的安全性和稳定性的考虑,例如加密存储密码、使用 HTTPS 协议传输数据、使用连接池管理数据库连接等。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)