Axios获取url的作品,但使用第二个参数作为对象却没有


121

我正在尝试将GET请求作为第二个参数发送,但作为url却不起作用。

这有效,$ _ GET ['naam']返回测试:

export function saveScore(naam, score) {
  return function (dispatch) { 
    axios.get('http://****.nl/****/gebruikerOpslaan.php?naam=test')
      .then((response) => {
        dispatch({type: "SAVE_SCORE_SUCCESS", payload: response.data})
      })
      .catch((err) => {
        dispatch({type: "SAVE_SCORE_FAILURE", payload: err})
      })
  }
};

但是当我尝试这样做时,根本没有任何东西$_GET

export function saveScore(naam, score) {
  return function (dispatch) { 
    axios.get('http://****.nl/****/gebruikerOpslaan.php',
    {
        password: 'pass',
        naam: naam,
        score: score
    })
      .then((response) => {
        dispatch({type: "SAVE_SCORE_SUCCESS", payload: response.data})
      })
      .catch((err) => {
        dispatch({type: "SAVE_SCORE_FAILURE", payload: err})
      })
  }
};

我为什么不能这样做?在文档中,它清楚地表明这是可能的。使用$_POST它也不起作用。

Answers:


297

axios.get 接受请求配置作为第二个参数(不是查询字符串参数)。

您可以使用paramsconfig选项来设置查询字符串参数,如下所示:

axios.get('/api', {
  params: {
    foo: 'bar'
  }
});

11
如何在服务器端提取它?
Mustafa Mamun

1
@zero_cool,您不需要访问参数,在这里的wrt示例中,您可以访问“ foo”,它将返回“ bar”
Ashutosh Raj

在服务器端提取是这里的重点,我确定您可以在服务器端使用字符串foo作为您方法的参数,但是我不确定如何立即将所有参数作为服务器端方法内的对象来获取。有什么线索吗?我想从这个URL这帮助stackoverflow.com/questions/55602990/...
Kurkula

86

在客户端上:

  axios.get('/api', {
      params: {
        foo: 'bar'
      }
    });

在服务器上:

function get(req, res, next) {

  let param = req.query.foo
   .....
}

1
@danikorean,我们可以在不使用请求方法别名的情况下编写相同的客户端代码axios.getaxios({url:"url_goes_here",data:{params:{foo:'bar'}})

1
此服务器代码为我节省了时间,谢谢!对于任何想知道的人,请对.get调用使用“参数”,而不要像在搜索时看到的那样使用“ body”。您可以根据需要在服务器端将其重命名,但是请保留客户端获取的参数。
DORRITO

axios.get('/api', { params}) !==axios.get('/api', params)
xgqfrms
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.