Axios는 URL이 작동하지만 두 번째 매개 변수를 개체로 사용하면 작동하지 않습니다.


121

두 번째 매개 변수로 GET 요청을 보내려고하는데 URL로 작동하는 동안 작동하지 않습니다.

이것은 작동합니다. $ _GET [ 'naam']은 test를 반환합니다.

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

그러나 이것을 시도하면 전혀 아무것도 없습니다 $_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})
      })
  }
};

왜 그렇게 할 수 없습니까? 문서에서 그것이 가능하다고 분명히 말합니다. 로 $_POST그 중 하나가 작동하지 않습니다.

답변:


297

axios.get 두 번째 매개 변수로 요청 구성을 허용합니다 (쿼리 문자열 매개 변수가 아님).

paramsconfig 옵션을 사용하여 다음과 같이 쿼리 문자열 매개 변수를 설정할 수 있습니다 .

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

11
서버 측에서 어떻게 추출합니까?
Mustafa Mamun

1
@zero_cool 당신이 액세스 PARAMS에 필요성을 해달라고, 여기에 예를 WRT는 "foo는"액세스 할 수 있으며 "바"를 반환합니다
아슈 라즈

여기서 서버 측에서 추출하는 것이 중요한 점입니다. 서버 측에서 메서드의 매개 변수로 foo 문자열을 사용할 수 있다고 확신하지만 서버 측 메서드 내에서 모든 매개 변수를 한 번에 개체로 가져 오는 방법을 모르겠습니다. 어떤 단서? 나는이 URL 에서이 도움을 얻으려고합니다. stackoverflow.com/questions/55602990/…
Kurkula

86

클라이언트에서 :

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

서버에서 :

function get(req, res, next) {

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

1
@danikorean, 요청 메서드 별칭을 사용하지 않고 동일한 클라이언트 코드를 작성할 수 있습니까? 즉, axios.get사용하는 대신axios({url:"url_goes_here",data:{params:{foo:'bar'}})
srbcheema1

1
이 서버 코드로 시간이 절약되었습니다. 감사합니다! 궁금한 사람은 .get 호출에 'params'를 사용하고 주변을 검색하는 동안 보았을 수도있는 'body'가 아닌 'params'를 사용하세요. 원하는 경우 서버 측에서 이름을 바꿀 수 있지만 클라이언트에 대한 매개 변수는 유지하십시오.
DORRITO

axios.get('/api', { params}) ! ==axios.get('/api', params)
xgqfrms
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.