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.

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

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
   .....
}

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.