如何使用Express与Angular在URL中创建查询参数实现POST请求分页
解决方案
首先明确一个基础规则:*HTTP POST请求本身完全支持URL携带查询参数,和GET请求的参数拼接规则没有区别,不会影响你在POST请求Body中传递大量参数的需求。
实现步骤
- 前端发起POST请求时,直接把分页、排序相关的参数按照你想要的格式拼接到请求URL末尾即可,比如要访问第2页、每页3条数据的请求URL直接写为
https://stackabuse.com/newdatasessions?page=2&limit=3&order=session_uuid DESC即可 - 你当前的Express路由已经通过
req.query读取URL查询参数,无需修改路由匹配规则,Express会自动解析URL后的参数挂载到req.query对象上,原有读取逻辑可以直接复用。
现有代码优化建议
你当前的逻辑只适配了固定参数的场景,灵活性不足,可以修改为通用分页逻辑:
app.post('/newdatasessions', checkAuth, cacheMiddleware(15*60), (req, res) => { // 给参数设置默认值,避免参数缺失报错 const page = parseInt(req.query.page) || 1 const limit = parseInt(req.query.limit) || 10 const order = req.query.order || 'session_uuid DESC' // 可在此处根据order参数对values数组做对应排序处理 // 计算分页切片位置 const start = (page - 1) * limit const end = start + limit const paginatedData = values.slice(start, end) res.send(paginatedData) })
如果你的大量查询参数是放在POST Body里的,直接通过req.body读取即可,和URL上的分页参数完全互不干扰,刚好满足你“用POST承载大参数、同时URL带分页参数方便直接访问指定页面”的需求。
内容的提问来源于stack exchange,提问作者Carlos Ortiz
相关产品推荐
相关产品推荐

