You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express GET接口如何实现查询参数值大小写不敏感匹配

问题定位

你需要实现GET方法、路径为/book的接口,要求name查询参数不区分大小写:传入scott、SCOTT都返回Cracking the Coding Interview,现有代码无法稳定满足需求,核心问题是缺少参数边界处理:

  1. 如果请求未携带name参数,req.query.name为undefined,直接调用toString()会触发类型错误,接口直接返回500异常
  2. 如果请求重复传name参数(比如/book?name=SCOTT&name=xxx),req.query.name会是数组类型,直接toString()会得到逗号拼接的字符串,匹配逻辑完全失效
  3. 如果传入的name前后带空格(比如name=' SCOTT '),现有逻辑无法匹配成功。
修复后完整代码
app.get('/book', function (req, res) {
  let result = ''
  // 先做空值兜底,再去除首尾空格、统一转小写,实现不区分大小写匹配
  const name = (req.query.name || '').toString().trim().toLowerCase()
  if (name === "scott") {
    result = "Cracking the Coding Interview"
  } else if (name === "enoch") {
    result = "The Pragmatic Programmer"
  } else {
    result = "Good Old Neon"
  }
  res.send(result);
});
效果验证
  • 传name=scott:匹配成功,返回Cracking the Coding Interview
  • 传name=SCOTT:统一转小写后值为scott,匹配成功,返回相同内容
  • 传name= ENOCH 这类带前后空格、全大写的参数:经trim()和转小写处理后可正常匹配到The Pragmatic Programmer
  • 未传name参数/传入其他值:走兜底逻辑返回Good Old Neon,不会抛出服务异常

内容的提问来源于stack exchange,提问作者Real Analysis Noob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:27:27