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

123

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

Синан Самет
источник

Ответы:

299

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

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

axios.get('/api', {
  params: {
    foo: 'bar'
  }
});
Ник Уральцев
источник
11
Как мне распаковать его на стороне сервера?
Мустафа Мамун
1
@zero_cool, вам не нужен доступ к параметрам, здесь, в примере, вы можете получить доступ к «foo», и он вернет «bar»
Ашутош Радж
Здесь важным моментом является извлечение на стороне сервера, я уверен, что вы можете использовать строку foo в качестве параметра для вашего метода на стороне сервера, но я не уверен, как сразу получить все параметры как объект внутри метода на стороне сервера. любая подсказка? Я пытаюсь получить эту помощь от этого URL stackoverflow.com/questions/55602990/...
Kurkula
86

На клиенте:

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

На сервере:

function get(req, res, next) {

  let param = req.query.foo
   .....
}
danikoren
источник
1
@danikorean, можем ли мы написать тот же клиентский код без использования псевдонима метода запроса, то есть вместо axios.getиспользования толькоaxios({url:"url_goes_here",data:{params:{foo:'bar'}})
srbcheema1
1
Этот код сервера сэкономил мне часы, спасибо! Для всех, кому интересно, используйте для вызова .get параметр 'params', а не 'body', как вы, возможно, видели во время поиска. Вы можете переименовать его как угодно на стороне сервера, если хотите, но сохраните параметры для получения клиентом.
DORRITO
axios.get('/api', { params}) ==! axios.get('/api', params)
xgqfrms