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цим не працює.

Відповіді:


297

axios.get приймає конфігурацію запиту як другий параметр (не запитувати параметри рядків).

Ви можете скористатися параметром paramsconfig, щоб встановити параметри рядків запиту таким чином:

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

11
Як отримати його на стороні сервера?
Мустафа Мамун

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.getвикористовувати лишеaxios({url:"url_goes_here",data:{params:{foo:'bar'}})
srbcheema1

1
Цей код сервера врятував мені години, дякую! Для всіх, хто цікавиться, дотримуйтесь виклику «params» для виклику .get, а не «body», як ви, можливо, бачили під час пошуку навколо. Ви можете перейменувати його будь-що на стороні сервера, якщо хочете, але зберігайте парами для клієнта.
ДОРРІТО

axios.get('/api', { params}) ! ==axios.get('/api', params)
xgqfrms
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.