如何让Express API支持通过URL参数限制返回数据条数?
你的代码没有对URL携带的_limit查询参数做处理,所有请求都会直接返回完整的projects数组,自然无法实现按参数限制返回条数的效果。
你需要在路由处理逻辑中读取_limit参数,对参数做合法性校验后,截取对应长度的数组返回即可,建议用res.json()方法替代res.send()返回JSON格式数据,语义更清晰。
修复后的完整代码如下:
const express = require("express"); const app = express(); const projects = [ { project: "Challenges_jschallenger.com" }, { project: "Using-Studio-Ghilis-API-With-JS-Only" }, { project: "my-portfolio-next" }, { project: "Youtube-Navbar-2021" }, { project: "Mana-raWozonWebsite" }, { project: "Movies-Website" }, { project: "Add-Remove-Mark-and-Mark-off-With-ReactJS" }, { project: "My-Portfolio" }, { project: "Github_Explorer" }, { project: "MestreALMO.github.io" }, { project: "Tests-With-useState-useEffect-useRef" }, { project: "Tic-Tac-Toe-React-in-JS" }, { project: "ReactJS-with-TypeScript-Template" }, { project: "Retractable-Accordion" }, ]; app.get("/", function (req, res) { // 读取查询参数中的_limit,转换为数字 const limit = Number(req.query._limit); // 校验limit是有效正整数时返回对应长度的数组,否则返回全部 const result = Number.isInteger(limit) && limit > 0 ? projects.slice(0, limit) : projects; res.json(result); }); app.listen(3100);
slice方法不会修改原数组,仅返回截取的新数组,符合接口查询的场景。如果传入的_limit大于数组总长度,会直接返回全部数组内容,不会报错。
内容的提问来源于stack exchange,提问作者MestreALMO
相关产品推荐
相关产品推荐

