Axios get in url berfungsi tetapi dengan parameter kedua sebagai objek tidak

121

Saya mencoba mengirim permintaan GET sebagai parameter kedua tetapi tidak berfungsi saat berfungsi sebagai url.

Ini berfungsi, $ _GET ['naam'] mengembalikan tes:

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

Tetapi ketika saya mencoba ini, tidak ada $_GETsama sekali:

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

Mengapa saya tidak bisa melakukan itu? Dalam dokumen itu dengan jelas mengatakan itu mungkin. Dengan $_POSTitu juga tidak berhasil.

Sinan Samet
sumber

Jawaban:

298

axios.get menerima konfigurasi permintaan sebagai parameter kedua (bukan parameter string kueri).

Anda dapat menggunakan paramsopsi config untuk menyetel parameter string kueri sebagai berikut:

axios.get('/api', {
  params: {
    foo: 'bar'
  }
});
Nick Uraltsev
sumber
11
Bagaimana cara mengekstraknya di sisi server?
Mustafa Mamun
1
@zero_cool Anda tidak perlu mengakses parameter, di sini contoh wrt Anda dapat mengakses "foo" dan itu akan mengembalikan "bar"
Ashutosh Raj
Mengekstrak di sisi server adalah poin penting di sini, saya yakin Anda dapat menggunakan string foo sebagai parameter untuk metode Anda di sisi server, tetapi saya tidak yakin bagaimana cara mengambil semua parameter sekaligus sebagai objek di dalam metode sisi server Anda. ada petunjuk? Saya mencoba mendapatkan bantuan ini dari url stackoverflow.com/questions/55602990/…
Kurkula
86

Pada klien:

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

Di server:

function get(req, res, next) {

  let param = req.query.foo
   .....
}
danikoren
sumber
1
@danikorean, dapatkah kita menulis kode klien yang sama tanpa menggunakan alias metode permintaan, yaitu alih-alih axios.gethanya menggunakanaxios({url:"url_goes_here",data:{params:{foo:'bar'}})
srbcheema1
1
Kode server ini menghemat waktu berjam-jam, terima kasih! Bagi siapa pun yang bertanya-tanya, tetap gunakan 'params' untuk panggilan .get, dan bukan 'body' seperti yang mungkin Anda lihat saat mencari-cari. Anda dapat menamai ulang apa pun di sisi server jika Anda mau, tetapi pertahankan parameter untuk mendapatkan klien.
DORRITO
axios.get('/api', { params}) ! ==axios.get('/api', params)
xgqfrms