无法通过express获取url后面的参数值,请前辈们指点

发布于 2022-09-07 03:26:31 字数 1459 浏览 14 评论 0

我想获取以下url的参数articlePageId的值,但试过好几种方法无法获取,到这边求助各位前辈,希望能抽空指点一下,谢谢!!

https://localhost:8090/articlePage.html?articlePageId='+item.ID

console.log(fullUrl)      // http://localhost:8090/
console.log(req.path)     // /
console.log(req.params)   // {}
console.log(req.query.articlePageId)  // undefined

articlePageId.html,链接到达这个页面,通过vue-resource向后台发送请求

window.onload = () => {
      const vm = new Vue({
        el: '#app',
        data: {
          dataGroup: [],
        },
        methods: {
          renderArticle() {
            this.$http.get('/', {

            }).then((res) => {
              this.dataGroup = res.data;
            }, (res) => {
              alert(res.status)
            })

          },
        },
        created() {
          this.renderArticle('/')

        }
      })
    }

后台接收get请求,本来是希望分析url提取articlePageId的值从数据库调取文章,但不知道为什么无法读取http://localhost:8090/后面的参数了

router.use('/articlePage',(req,res)=>{
  
    db.query(`SELECT * FROM articles_table WHERE ID='${pageId.id}'`,(err,page)=>{
      if(err){
        console.error(err);

        res.status(500).send('database error').end();
      }else{
        res.send(page);
      }
    })

  })

Ps:已经在主服务器使用了body-parser

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人生百味 2022-09-14 03:26:31

在express 4.0 版本里
1、首先先检查你是否设置了 body-parser 中间件解析请求体

const bodyParser = require('body-parser');
app.use(bodyParser.json());  
app.use(bodyParser.urlencoded({ extended: false }));

若有设置,获取仍然无效,那么请往下看第二种方法。

2、我建议使用originalUrl进行匹配。

  const path = req.originalUrl;  // /articlePage.html?articlePageId=id
  const queryUrl = path.strsub(path.indexOf('?')+1); // articlePageId=id
  const lines = queryUrl.split('&');
  const val = {};
  for (const line of lines) {
    let [left, right] = line.split('=');
    right = decodeURIComponent(right);  // 对参数进行解码
    val[left] = right;  // 返回对象数组
 }
//     例如 articlePageId=1&limit=4
//  返回   { articlePageId: 1, limit: 4 }

可参考官方文档:http://expressjs.com/en/4x/ap...

或直接用函数解决

function getKeyValue(url) {
    let result = {};
    let reg = new RegExp('([\\?|&])(.+?)=([^&?]*)', 'ig');
    let arr = reg.exec(url);

    while (arr) {
        result[arr[2]] = arr[3];

        arr = reg.exec(url);
    }

    return result;
}

const path = req.originalUrl;
getKeyValue(path);

手心的温暖 2022-09-14 03:26:31

app.use(express.bodyParser());

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文