如何在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
相关产品推荐
相关产品推荐

