You need to enable JavaScript to run this app. Node.js中URL传整数参数时Restful API无响应故障如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中URL传整数参数时Restful API无响应故障如何解决

问题定位&修复方案

第一步:修正访问路径

你当前的请求地址格式错误,GET请求的第一个查询参数需要用?开头,而非&,你使用的localhost:3000/&id=13不符合传参规范,正确访问地址应为:
localhost:3000/?id=13
&仅用于多个查询参数之间的分隔,例如需要传两个参数时写法为localhost:3000/?id=13&date=20240101。

第二步:修复代码显性问题

原代码存在多处逻辑错误,是导致请求异常的核心原因:

  • 重复引入express模块,冗余代码可能引发未知问题
  • 数据库查询成功后将结果赋值给aladinModel变量,但实际返回给前端的是空字符串ardaforecast,就算查询成功也拿不到有效数据
  • 没有对传入的id做非空校验,id为空时调用存储过程必然报错
  • 出错时没有打印实际数据库错误信息,无法定位数据库层面的根因
  • 存储过程调用直接拼接参数,存在SQL注入风险,同时容易引发语法错误

修复后的完整代码

// Create express app
var express = require("express")
var app = express()
var mysql = require('mysql')
var cors = require('cors')

app.use(cors())

// Server port
var HTTP_PORT = 3000

var pool = mysql.createPool({
  connectionLimit: 10,
  host: '192.168.0.1',
  user: 'user',
  port: '3388',
  password: 'password',
  database: 'databasename'
});

app.route('/')
  .get(function (req, res) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Cache-Control', 'private, no-cache, no-store, must-revalidate');
    const id = req.query.id;
    // 校验必填参数
    if (!id) {
      return res.status(400).json({ error: "缺少必填参数id" })
    }
    // 使用参数化查询避免注入和语法错误
    pool.query(`CALL Get_Alert_levels_Station(?)`, [id], function (error, result) {
      if (error) {
        // 控制台打印真实错误信息,方便排查
        console.error('数据库查询错误:', error)
        return res.status(500).json({ error: "Грешна заявка. Опитай отново !"})
      }
      // 返回实际查询结果
      res.json({ ardaforecast: result })
    });
  });

// Start server
app.listen(HTTP_PORT, () => {
  console.log("Server running on port %PORT%".replace("%PORT%", HTTP_PORT))
});

pool.on('error', function (err) {
  console.log('数据库连接池错误:', err.code);
});

app.use(function (req, res) {
  res.status(404).json({error: '接口不存在'})
})

仍报错的后续排查方向

  • 查看服务端控制台打印的数据库错误信息,如果提示存储过程不存在,说明你新对接的数据库中没有创建Get_Alert_levels_Station这个存储过程,需要确认创建
  • 确认192.168.0.1的3388端口是否对服务端部署的机器开放,有没有防火墙拦截
  • 确认你使用的数据库账号是否有执行Get_Alert_levels_Station存储过程的权限

内容的提问来源于stack exchange,提问作者Pizhev Racing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 00:45:04