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.

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

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.