如何在Node.js中从JSON文件根据请求uid参数获取指定数据集
代码修改方案
修改后的完整代码
const express = require('express') const app = express() const port = 8080 // 注意:如果你的JSON文件名为user.json,这里需要改成require('./user.json') const users = require('./users'); // 同时支持 /user/1 和 /user/uid=1 两种请求格式 app.get('/user/:uid', (req, res) => { // 提取uid参数,处理uid=前缀的情况 const uidStr = req.params.uid.replace('uid=', ''); // 转换为数字类型,和JSON文件中的id字段类型对齐 const uid = parseInt(uidStr, 10); // 遍历数组匹配对应id的用户 const targetUser = users.find(user => user.id === uid); if (targetUser) { // express内置json方法,自动序列化对象返回,无需手动转字符串 res.json(targetUser); } else { // 无匹配用户时返回404提示 res.status(404).json({msg: '未找到对应用户'}); } }); app.listen(port, () => { console.log(`app listening at http://localhost:${port}`) });
核心修改点说明
- 修正了原代码中路由回调函数开头多余的
s语法错误 - 新增参数解析逻辑:兼容
uid=xxx格式的传参,同时把字符串类型的参数转成数字,和user.json里的id类型对齐 - 新增匹配逻辑:用数组的
find方法遍历users数组,匹配id和传入uid一致的用户条目 - 新增异常处理:匹配不到用户时返回404状态码和提示信息,避免返回空内容
- 优化返回逻辑:直接使用express内置的
res.json()方法返回对象,无需手动调用JSON.stringify,代码更简洁
验证方法
启动服务后访问以下地址均可返回id为1的用户数据:
http://localhost:8080/user/1http://localhost:8080/user/uid=1
内容的提问来源于stack exchange,提问作者Nirodha Wickramarathna
相关产品推荐
相关产品推荐

