客户端在/article/:id路由时,如何在Express中获取GET请求路由参数?
在Express中从GET请求获取路由参数的方法
嘿,别慌!我当初刚上手Express的时候也在这卡过一会儿,其实获取路由参数真的很直接,结合你说的/article/:id场景,我给你一步步讲清楚:
核心方法:使用req.params对象
Express会自动把路由中用:xxx定义的占位参数解析到req.params对象里,你直接取值就行,完全不用复杂的配置。
1. 服务器端路由配置示例
先在你的Express服务器上配置对应API路由,比如你要接收带文章ID的请求,可以这么写:
// 导入Express并创建实例(如果还没初始化的话) const express = require('express'); const app = express(); // 配置带路由参数的GET接口 app.get('/api/article/:id', (req, res) => { // 从req.params里取出id参数 const articleId = req.params.id; // 这里可以根据id做你的业务逻辑,比如查询数据库 // 示例:const targetArticle = await ArticleModel.findById(articleId); // 返回响应给客户端 res.json({ status: 'success', data: { articleId: articleId, message: `接收到文章ID为${articleId}的请求` } }); }); // 启动服务器 app.listen(3000, () => { console.log('服务器运行在http://localhost:3000'); });
2. 客户端发起请求的示例
你提到客户端在/article/:id路由下,那可以先从当前页面的URL里提取出这个id,再拼到API请求路径里:
// 假设当前页面URL是 http://yourdomain/article/123 // 从路径中提取文章ID const pathSegments = window.location.pathname.split('/'); const currentArticleId = pathSegments[pathSegments.length - 1]; // 这里拿到的是'123' // 发起GET请求到服务器API fetch(`/api/article/${currentArticleId}`) .then(response => response.json()) .then(result => { console.log('服务器返回的数据:', result); // 这里处理返回的业务数据 }) .catch(err => console.error('请求出错:', err));
额外注意事项
- 如果你的路由有多个参数,比如
/api/article/:id/comments/:commentId,那req.params里会同时包含id和commentId两个属性,直接用req.params.id、req.params.commentId就能获取。 req.params里的参数默认都是字符串类型,如果需要数字类型,记得手动转换,比如const articleId = parseInt(req.params.id, 10);。- 一定要确保服务器路由和客户端请求的URL路径完全匹配,比如服务器是
/api/article/:id,客户端就别写成/api/articles/:id(多了个s),这种小细节很容易踩坑。
内容的提问来源于stack exchange,提问作者Yeats
相关产品推荐
相关产品推荐

