如何在Node.js的app.get()中传递两个参数实现MySQL日期区间查询
实现Express接口接收两个日期参数的两种常用方案
方案1:路由参数形式(参数写在路径里)
直接在路由路径中定义两个占位符即可,代码示例:
app.get('/api/v1/trans_details/:date_from/:date_to', function(req, res) { // 从路由参数中取出两个日期 const dateFrom = req.params.date_from const dateTo = req.params.date_to // 后续业务逻辑:校验日期格式、拼接SQL查询 // 注意使用参数化查询避免SQL注入,示例MySQL查询写法: // const sql = 'SELECT * FROM trans_details WHERE create_time BETWEEN ? AND ?' // db.query(sql, [dateFrom, dateTo], (err, result) => { // // 处理返回结果 // }) })
调用方式示例:GET /api/v1/trans_details/2024-01-01/2024-01-31
方案2:查询参数形式(更推荐筛选类场景使用)
路由路径无需提前定义参数占位符,参数拼接在请求地址的?后面,代码示例:
app.get('/api/v1/trans_details', function(req, res) { // 从查询参数中取出两个日期 const dateFrom = req.query.date_from const dateTo = req.query.date_to // 建议加非空校验 if (!dateFrom || !dateTo) { return res.status(400).json({msg: '请传入起始日期和结束日期'}) } // 后续业务逻辑同方案1 })
调用方式示例:GET /api/v1/trans_details?date_from=2024-01-01&date_to=2024-01-31
这种方案灵活性更高,后续需要新增其他筛选条件时不需要修改路由定义,更符合接口设计规范。
注意事项
- 传入的日期建议统一格式(比如
YYYY-MM-DD),拿到参数后先做格式合法性校验 - 操作MySQL时必须使用参数化查询,不要直接拼接字符串到SQL语句中,避免SQL注入风险
内容的提问来源于stack exchange,提问作者Revan
相关产品推荐
相关产品推荐

