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

Node.js中结合第三方API使用查询参数实现搜索的代码问题排查

修复后的实现方案

你的代码存在几个关键问题,导致无法正确实现搜索和排序功能,下面是修正后的完整代码及说明:

原代码的问题点

  • 错误设置了multipart/form-data请求头:GET请求不需要这个头,反而可能干扰第三方API的响应处理,axios默认会正确处理JSON格式的响应。
  • 混合使用async/await和.then():这种写法会导致代码嵌套混乱,且无法捕获axios请求本身的异常。
  • 误用Array.find():该方法需要传入回调函数,而不是MongoDB风格的查询对象,$regex语法在这里不生效。
  • 未实现order参数的排序逻辑。
  • 错误处理不完整:仅捕获了后续逻辑的错误,没有处理axios请求失败的情况。

修正后的代码

const express = require('express');
const axios = require('axios');
const router = express.Router();

router.get('', async (req, res) => {
  try {
    // 提取查询参数,order默认设为Asc
    const { name, order = 'Asc' } = req.query;

    // 请求第三方大学数据API
    const { data: universities } = await axios.get('http://universities.hipolabs.com/search');

    // 处理名称搜索
    let result = universities;
    if (name) {
      // 创建不区分大小写的正则表达式
      const nameMatcher = new RegExp(name, 'i');
      // 筛选出名称匹配的大学
      result = universities.filter(uni => nameMatcher.test(uni.name));
    }

    // 处理排序逻辑
    result.sort((a, b) => {
      const nameA = a.name.toLowerCase();
      const nameB = b.name.toLowerCase();
      return order.toLowerCase() === 'asc' 
        ? nameA.localeCompare(nameB) 
        : nameB.localeCompare(nameA);
    });

    // 返回处理后的结果
    res.json({
      status: 'Success',
      result: result
    });
  } catch (err) {
    // 捕获所有异常并返回错误信息
    res.status(500).json({
      status: 'Error',
      message: err.message || '服务器处理失败'
    });
  }
});

module.exports = router;

关键功能说明

  1. 搜索功能:使用Array.filter()结合正则表达式,实现不区分大小写的名称模糊匹配,只要大学名称包含查询的name参数内容就会被筛选出来。
  2. 排序功能:根据order参数的值,对筛选后的结果按名称进行升序(Asc)或降序(Desc)排序,默认升序。
  3. 错误处理:用外层try/catch捕获所有异常,包括axios请求失败、排序或筛选逻辑出错等情况,返回统一格式的错误响应。
  4. 请求优化:移除了多余的请求头,让axios自动处理响应格式,避免不必要的问题。

测试用例

  • 搜索包含"Cairo"的大学并升序:http://localhost/university?name=Cairo&order=Asc
  • 搜索包含"London"的大学并降序:http://localhost/university?name=London&order=Desc
  • 不传入name参数时返回所有大学(默认升序):http://localhost/university

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:40:31