Axios get in url funktioniert, aber mit dem zweiten Parameter als Objekt nicht

120

Ich versuche, eine GET-Anfrage als zweiten Parameter zu senden, aber es funktioniert nicht, solange es als URL funktioniert.

Dies funktioniert, $ _GET ['naam'] gibt den Test zurück:

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})
      })
  }
};

Aber wenn ich das versuche, ist überhaupt nichts $_GETdrin:

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})
      })
  }
};

Warum kann ich das nicht tun? In den Dokumenten steht klar, dass es möglich ist. Damit $_POSTfunktioniert es auch nicht.

Sinan Samet
quelle

Antworten:

295

axios.get Akzeptiert eine Anforderungskonfiguration als zweiten Parameter (keine Abfragezeichenfolgenparameter).

Mit der paramsKonfigurationsoption können Sie Abfragezeichenfolgenparameter wie folgt festlegen:

axios.get('/api', {
  params: {
    foo: 'bar'
  }
});
Nick Uraltsev
quelle
11
Wie extrahiere ich es auf der Serverseite?
Mustafa Mamun
1
@zero_cool Sie müssen nicht auf Parameter zugreifen, hier können Sie beispielsweise auf "foo" zugreifen und es wird "bar" zurückgegeben
Ashutosh Raj
Das Extrahieren auf der Serverseite ist hier ein wichtiger Punkt. Ich bin sicher, dass Sie den String foo als Parameter für Ihre Methode auf der Serverseite verwenden können, aber ich bin nicht sicher, wie Sie alle Parameter gleichzeitig als Objekt in Ihrer serverseitigen Methode erfassen können. irgendeine Ahnung? Ich versuche, diese Hilfe von dieser URL zu bekommen stackoverflow.com/questions/55602990/…
Kurkula
86

Auf Client:

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

Auf dem Server:

function get(req, res, next) {

  let param = req.query.foo
   .....
}
danikoren
quelle
1
@danikorean, können wir den gleichen Client-Code schreiben, ohne den Alias ​​der Anforderungsmethode zu verwenden, dh anstatt axios.getnuraxios({url:"url_goes_here",data:{params:{foo:'bar'}})
srbcheema1
1
Dieser Servercode hat mir Stunden gespart, danke! Wenn Sie sich fragen, bleiben Sie bei 'params' für den .get-Aufruf und nicht bei 'body', wie Sie vielleicht beim Durchsuchen gesehen haben. Sie können es auf der Serverseite beliebig umbenennen, aber die Parameter für den Client erhalten.
DORRITO
axios.get('/api', { params}) ! ==axios.get('/api', params)
xgqfrms