You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+Express+Axios请求:服务端无法获取请求参数求助

解决Axios GET请求参数无法传递到后端的问题

问题情况

多次搜索该问题仍未找到解决方案:前端通过Axios发送带排序参数的GET请求,后端Node.js接口中req.query和req.params都拿不到参数,但用Postman测试时参数能正常传递。

前端代码

export const getBlog = (sortColumn, sortOrder) => async dispatch => {
  
 console.log("blogActions.js => getBlog() executed.");
 console.log("sortColumn = " + sortColumn);
 console.log("sortOrder = " + sortOrder);

 let options = {
            order: [sortColumn, sortOrder]
            };
            

  try{
  // call the api. Get all our feedback from our endpoint.
  const res = await axios.get('/api/blog', options

    
  /*
  {
    params: {
      sortColumn: "Heading", 
      sortOrder: "ASC"
        }
    } */
  );

后端代码

router.get('/', async (req, res) => {
    console.log('/api/blog - get');
    
    // Return all blog.
    // We need to query our database to get our data.
    // We will do this by using the findAll() function, to get all the feedback in the feedbacks table.
    // Note: Remember if we use await, we need an async before(req, res).

    console.log("req.query = " + req.query);
    console.log("req.params = " + req.params);
    //const { sortColumn, sortOrder} = req.params;
    const { sortColumn, sortOrder} = req.query;
    console.log(sortColumn);
    console.log(sortOrder);


    try{
    const list = await Blog.findAll(
      
      /*
      {
      order: [[sequelize.col(sortColumn)]]
      } 
    */
    );

    // send the list back to the client.
    res.send(list);
    }
    catch(e)
    {
        console.log(e); // error
    }

  });

解决方法

问题出在Axios GET请求的参数传递方式上:Axios的GET请求第二个参数是配置对象,其中只有params属性里的内容才会被自动转化为URL查询字符串,传给后端的req.query。你当前直接传了order字段,Axios不会识别这个字段为查询参数。

修改前端代码

把排序参数放到params字段里:

export const getBlog = (sortColumn, sortOrder) => async dispatch => {
  
 console.log("blogActions.js => getBlog() executed.");
 console.log("sortColumn = " + sortColumn);
 console.log("sortOrder = " + sortOrder);

 // 修改options,将参数放在params中
 let options = {
    params: {
      sortColumn: sortColumn,
      sortOrder: sortOrder
    }
 };
            

  try{
  const res = await axios.get('/api/blog', options);
  // 后续逻辑...
  } catch(err) {
    // 错误处理
  }

后端补充排序逻辑(可选)

如果需要根据参数实现排序,解开你注释的findAll配置即可:

const list = await Blog.findAll({
  order: [[sequelize.col(sortColumn), sortOrder]]
});

这样修改后,后端就能通过req.query拿到sortColumn和sortOrder参数了。

内容的提问来源于stack exchange,提问作者jm03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:42:33