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

如何在Node.js+Express中调用API并筛选名称以Ka开头的用户

实现Express接口筛选名称以Ka开头的用户

初始代码存在的问题

  • getUsers函数嵌套Promise,代码冗余且可读性差,未处理请求错误
  • 未将filterUser挂载为可访问路由,无法触发筛选逻辑
  • 全局users数组依赖异步加载,服务启动初期请求接口可能返回空数据
  • 异步逻辑可通过async/await优化,提升代码清晰度

修正后的完整代码

const express = require('express')
const app = express()
const fetch = require('node-fetch');

const url = "https://jsonplaceholder.typicode.com/users";

// 封装异步获取用户数据的函数,添加错误处理
async function getUsers() {
  try {
    const res = await fetch(url);
    if (!res.ok) throw new Error(`请求失败: ${res.status}`);
    return await res.json();
  } catch (err) {
    console.error('获取用户数据出错:', err);
    return [];
  }
}

// 筛选名称以Ka开头的用户(不区分大小写)
async function filterKaUsers(req, res) {
  const users = await getUsers();
  const filteredUsers = users.filter(user => 
    user.name.toLowerCase().startsWith('ka')
  );
  res.json(filteredUsers);
}

// 挂载路由:根路由返回所有用户,/ka-users返回筛选后的用户
app.get('/', async (req, res) => {
  const users = await getUsers();
  res.json(users);
});

app.get('/ka-users', filterKaUsers);

app.listen(3000, () => {
  console.log("服务运行在3000端口");
});

关键改进点

  • 用async/await替代嵌套Promise,异步逻辑更直观
  • 为fetch请求添加错误捕获,避免请求失败导致程序崩溃
  • 移除全局users数组,每次请求实时获取最新数据(如需缓存可按需添加)
  • 新增/ka-users路由专门返回筛选结果,职责划分更清晰
  • 统一使用res.json()返回JSON格式响应,符合API接口规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:03:28