酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

通过express实现一个可以携带参数的数据查询接口 具体要求: 1、创建数据表,具体数据内容可以自己决定,表中至少需要有自增id字段和名称字段 2、数据查询接口需要实现可以通过id字段精准查询,也可以通过名称模糊查询 3、查询返回给前端的结果必须为json格式,并且解决跨域问题

看来你需要一个使用 Express 实现的简单数据查询接口。以下是一个完整的示例,包括创建数据表、实现数据查询接口,并处理跨域问题。 1. 创建数据表 假设我们使用 SQLite3 作为数据库(因为它不需要复杂的配置,适合快速示例)。你可以根据需要选择其他数据库。 首先,安装必要的依赖: ```bash npm install express sqlite3 cors body-parser ``` 然后,创建一个 SQLite 数据库文件(例如 `database.sqlite`)并初始化数据表: ```javascript const sqlite3 = require('sqlite3').verbose(); let db = new sqlite3.Database('./database.sqlite'); db.serialize(() => { db.run("CREATE TABLE IF NOT EXISTS items (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)"); // 插入一些示例数据 const stmt = db.prepare("INSERT INTO items (name) VALUES (?)"); stmt.run("Alice"); stmt.run("Bob"); stmt.run("Charlie"); stmt.finalize(); }); db.close(); ``` 2. 实现数据查询接口 接下来,我们创建一个 Express 应用,并实现数据查询接口: ```javascript const express = require('express'); const sqlite3 = require('sqlite3').verbose(); const cors = require('cors'); const bodyParser = require('body-parser'); const app = express(); const port = 3000; // 中间件 app.use(cors()); // 解决跨域问题 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); let db = new sqlite3.Database('./database.sqlite'); // 数据查询接口 app.get('/query', (req, res) => { const { id, name } = req.query; let query = "SELECT * FROM items"; let params = []; if (id) { query += " WHERE id = ?"; params.push(parseInt(id)); } else if (name) { query += " WHERE name LIKE ?"; params.push(`%${name}%`); } db.all(query, params, (err, rows) => { if (err) { res.status(500).json({ error: err.message }); return; } res.json(rows); }); }); app.listen(port, () => { console.log(`Server is running at http://localhost:${port}`); }); ``` 3. 注意事项 - SQL 注入防护:上面的代码已经通过参数化查询来防止 SQL 注入。 - 错误处理:在生产环境中,应该添加更详细的错误处理和日志记录。 - 性能优化:对于大型数据集,可能需要考虑索引和查询优化。 测试接口 启动服务器后,你可以使用以下 URL 来测试接口: - 通过 ID 精准查询:`http://localhost:3000/query?id=1` - 通过名称模糊查询:`http://localhost:3000/query?name=Alice` 这样,你就拥有了一个简单的数据查询接口,支持通过 ID 精准查询和通过名称模糊查询,并且解决了跨域问题。 [2024-12-08 11:12:47 | AI写代码神器 | 751点数解答]

相关提问