Axios получает URL-адрес, но со вторым параметром в качестве объекта он не работает

Я пытаюсь отправить запрос 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 тоже не работает.


person Sinan Samet    schedule 03.12.2016    source источник


Ответы (4)


axios.get принимает конфигурацию запроса как второй параметр (не параметры строки запроса).

Вы можете использовать параметр конфигурации params, чтобы установить следующие параметры строки запроса:

axios.get('/api', {
  params: {
    foo: 'bar'
  }
});
person Nick Uraltsev    schedule 03.12.2016
comment
Как мне распаковать его на стороне сервера? - person Mustafa Mamun; 05.01.2017
comment
@zero_cool вам не нужен доступ к параметрам, здесь, в примере, вы можете получить доступ к foo, и он вернет bar - person Ashutosh Raj; 27.04.2017
comment
Здесь важным моментом является извлечение на стороне сервера, я уверен, что вы можете использовать строку foo в качестве параметра для своего метода на стороне сервера, но я не уверен, как сразу получить все параметры как объект внутри метода на стороне сервера. какая-нибудь подсказка? Я пытаюсь получить эту помощь по этому URL-адресу stackoverflow.com/questions/55602990/ - person Kurkula; 10.04.2019
comment
axios.get ('api? & foo = bar') || axios.get (api? & $ {param} = $ {значение}) - person King David Gyimah; 08.02.2021

На клиенте:

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

На сервере:

function get(req, res, next) {

  let param = req.query.foo
   .....
}
person danikoren    schedule 22.05.2017
comment
@danikorean, можем ли мы написать тот же клиентский код без использования псевдонима метода запроса, т.е. вместо axios.get, используя только axios({url:"url_goes_here",data:{params:{foo:'bar'}}) - person srbcheema1; 22.10.2019
comment
Этот код сервера сэкономил мне часы, спасибо! Для всех, кому интересно, используйте для вызова .get параметр params, а не body, как вы, возможно, видели во время поиска. Вы можете переименовать его как угодно на стороне сервера, если хотите, но сохраните параметры для получения клиентом. - person DORRITO; 17.01.2020
comment
Почему это params на клиенте, но query на сервере? - person Sir hennihau; 14.10.2020
comment
Это сэкономило мне много времени, Static: axios.get ('api? & Foo = bar') || Динамический: axios.get (api?&${param}=${value}) - person King David Gyimah; 08.02.2021
comment
Большое спасибо. Я почти 2 часа работал, чтобы извлечь значение параметра. Спасибо еще раз. - person Tareq; 13.05.2021

Для меня я пытался отправить параметры, используя axios.post.

При переключении и клиента, и сервера на axios.get, req.query.foo работал как шарм

person cormacncheese    schedule 01.06.2021

У меня это отлично работает. Когда это пост-запрос, вложенный объект данных не нужен, но в запросах на получение, чтобы отправить данные, он вам нужен.

axios.get('/api', {
    data: {
        foo: 'bar'
    }
}
person Nika Nishnianidze    schedule 24.06.2021