Axios get in url çalışır, ancak ikinci parametreyle nesne olarak çalışmaz


121

GET isteğini ikinci parametre olarak göndermeye çalışıyorum ancak url olarak çalışırken çalışmıyor.

Bu çalışır, $ _GET ['naam'] testi döndürür:

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

Ama bunu denediğimde hiçbir şey yok $_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})
      })
  }
};

Bunu neden yapamıyorum? Dokümanlarda bunun mümkün olduğunu açıkça söylüyor. Onunla $_POSTda çalışmıyor.

Yanıtlar:


298

axios.get ikinci parametre olarak bir istek yapılandırmasını kabul eder (sorgu dizesi parametreleri değil).

paramsSorgu dizesi parametrelerini ayarlamak için config seçeneğini aşağıdaki gibi kullanabilirsiniz:

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

11
Bunu sunucu tarafında nasıl çıkarırım?
Mustafa Mamun

1
@zero_cool parametrelere erişmeniz gerekmez, burada örnek "foo" ya erişebilirsiniz ve "bar" olarak geri dönecektir
Ashutosh Raj

Sunucu tarafında ayıklamak burada önemli bir noktadır, eminim ki, sunucu tarafındaki yönteminiz için parametre olarak string foo kullanabilirsiniz, ancak tüm parametreleri aynı anda sunucu tarafı yönteminizin içinde nesne olarak nasıl yakalayacağımı bilmiyorum. bir ipucu? Bu yardımı bu url stackoverflow.com/questions/55602990/…
adresinden

86

İstemcide:

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

Sunucuda:

function get(req, res, next) {

  let param = req.query.foo
   .....
}

1
@danikorean, aynı müşteri kodunu istek yöntemi takma adı kullanmadan yazabilir miyiz, yani axios.getsadeceaxios({url:"url_goes_here",data:{params:{foo:'bar'}})
srbcheema1

1
Bu sunucu kodu bana saatler kazandırdı, teşekkürler! Merak edenler için, arama yaparken gördüğünüz gibi 'body' yerine .get çağrısı için 'params' kullanın. İsterseniz sunucu tarafında herhangi bir şeyi yeniden adlandırabilirsiniz, ancak istemcinin elde etmesi için parametreleri koruyun.
DORRITO

axios.get('/api', { params}) ! ==axios.get('/api', params)
xgqfrms
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.