Axios get in url funciona pero con el segundo parámetro como objeto no


121

Estoy tratando de enviar una solicitud GET como segundo parámetro, pero no funciona mientras lo hace como url.

Esto funciona, $ _GET ['naam'] devuelve la prueba:

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

Pero cuando intento esto, no hay nada en $_GETabsoluto:

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

¿Por qué no puedo hacer eso? En los documentos dice claramente que es posible. Con $_POSTeso tampoco funciona.

Respuestas:


298

axios.get acepta una configuración de solicitud como segundo parámetro (no parámetros de cadena de consulta).

Puede usar la paramsopción de configuración para configurar los parámetros de la cadena de consulta de la siguiente manera:

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

11
¿Cómo lo extraigo del lado del servidor?
Mustafa Mamun

1
@zero_cool no necesita acceder a los parámetros, aquí con un ejemplo, puede acceder a "foo" y devolverá "bar"
Ashutosh Raj

La extracción en el lado del servidor es un punto importante aquí, estoy seguro de que puede usar la cadena foo como parámetro para su método en el lado del servidor, pero no estoy seguro de cómo tomar todos los parámetros a la vez como objeto dentro de su método del lado del servidor. ¿Cualquier pista? Estoy tratando de obtener esta ayuda de esta URL stackoverflow.com/questions/55602990/…
Kurkula

86

En cliente:

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

En el servidor:

function get(req, res, next) {

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

1
@danikorean, ¿podemos escribir el mismo código de cliente sin usar el alias del método de solicitud, es decir, en lugar de axios.getusar solo?axios({url:"url_goes_here",data:{params:{foo:'bar'}})
srbcheema1

1
Este código de servidor me ahorró horas, ¡gracias! Para cualquiera que se pregunte, quédese con 'params' para la llamada .get, y no con 'body' como puede haber visto mientras buscaba. Puede cambiarle el nombre en el lado del servidor si lo desea, pero mantenga los parámetros para que el cliente obtenga.
DORRITO

axios.get('/api', { params}) ! ==axios.get('/api', params)
xgqfrms
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.